подключаемый модуль postgresql_request
Область применения: ✅Microsoft Fabric✅Azure Data Explorer
Подключаемый postgresql_request
модуль отправляет SQL-запрос в конечную точку сети Azure PostgreSQL Server и возвращает первый набор строк в результатах. Запрос может возвращать несколько наборов строк, но для остальной части запроса Kusto доступен только первый набор строк.
Подключаемый модуль вызывается оператором evaluate
.
Внимание
Подключаемый postgresql_request
модуль отключен по умолчанию.
Чтобы включить подключаемый модуль, выполните .enable plugin postgresql_request
команду. Чтобы узнать, какие подключаемые модули включены, используйте .show plugin
команды управления.
Синтаксис
evaluate
postgresql_request
(
ConnectionString ,
SqlQuery [,
SqlParameters] )
[:
OutputSchema]
Дополнительные сведения о соглашениях синтаксиса.
Параметры
Имя (название) | Type | Обязательно | Описание |
---|---|---|---|
ConnectionString | string |
✔️ | Строка подключения, указывающий на конечную точку сети сервера PostgreSQL. Ознакомьтесь с проверкой подлинности и указанием конечной точки сети. |
SqlQuery | string |
✔️ | Запрос, выполняемый в конечной точке SQL. Должен возвращать один или несколько наборов строк. Только первый набор доступен для остальной части запроса. |
SqlParameters | dynamic |
Объект контейнера свойств, содержащий пары "ключ-значение", передаваемые в качестве параметров вместе с запросом. | |
OutputSchema | Имена и типы ожидаемых столбцов выходных данных подключаемого postgresql_request модуля.Синтаксис: ( ColumnName : ColumnType [, ...] ) |
Примечание.
- Указание OutputSchema настоятельно рекомендуется, так как он позволяет использовать подключаемый модуль в сценариях, которые в противном случае могут не работать без него, например запрос между кластерами. OutputSchema также может включать несколько оптимизаций запросов.
- Ошибка возникает, если схема времени выполнения первого набора строк, возвращаемого конечной точкой сети SQL, не соответствует схеме OutputSchema .
Проверка подлинности и авторизация
Чтобы авторизовать конечную точку сети сервера PostgreSQL, необходимо указать сведения о авторизации в строка подключения. Поддерживаемый метод авторизации осуществляется через имя пользователя и пароль.
Настройка политики выноски
Подключаемый модуль выполняет выноски в базу данных PostgreSQL. Убедитесь, что политика выноски кластера включает вызовы типа postgresql
в целевой PostgreSqlDbUri.
В следующем примере показано, как определить политику выноски для баз данных PostgreSQL. Мы рекомендуем ограничить политику выноски определенными конечными точками (my_endpoint1
, my_endpoint2
).
[
{
"CalloutType": "postgresql",
"CalloutUriRegex": "my_endpoint1\\.postgres\\.database\\.azure\\.com",
"CanCall": true
},
{
"CalloutType": "postgresql",
"CalloutUriRegex": "my_endpoint2\\.postgres\\.database\\.azure\\.com",
"CanCall": true
}
]
В следующем примере показана .alter callout policy
команда для postgresql
CalloutType:
.alter cluster policy callout @'[{"CalloutType": "postgresql", "CalloutUriRegex": "\\.postgresql\\.database\\.azure\\.com", "CanCall": true}]'
Проверка подлинности по имени пользователя и с помощью пароля
Подключаемый postgresql_request
модуль поддерживает только проверку подлинности имени пользователя и пароля для конечной точки сервера PostgreSQL и не интегрируется с проверкой подлинности Microsoft Entra.
Имя пользователя и пароль предоставляются в составе строки подключений с помощью следующих параметров:
User ID=...; Password=...;
Предупреждение
Конфиденциальная или защищенная информация должна быть скрыта от строка подключения и запросов, чтобы они были пропущены из любой трассировки Kusto. Дополнительные сведения см. в скрытых строковых литералах.
Шифрование и проверка сервера
Для обеспечения безопасности SslMode
при подключении к конечной точке сети сервера PostgreSQL устанавливается безусловное значение Required
. В результате сервер должен быть настроен с допустимым сертификатом СЕРВЕРА SSL/TLS.
Указание конечной точки сети
Укажите конечную точку сети PostgreSQL в рамках строка подключения.
Синтаксис
Host
=
Полное доменное имя [Port
=
порт]
Где:
- Полное доменное имя — это полное доменное имя конечной точки.
- Порт — это TCP-порт конечной точки.
Примеры
SQL-запрос к базе данных Azure PostgreSQL
В следующем примере sql-запрос отправляется в базу данных Azure PostgreSQL. Он извлекает все записи из public."Table"
, а затем обрабатывает результаты.
Примечание.
Этот пример не следует принимать в качестве рекомендации для фильтрации или проекта данных таким образом. Sql-запросы должны быть созданы для возврата наименьшего набора данных.
evaluate postgresql_request(
'Host=contoso.postgres.database.azure.com; Port = 5432;'
'Database=Fabrikam;'
h'User Id=USERNAME;'
h'Password=PASSWORD;',
'select * from public."Table"') : (Id: int, Name: string)
| where Id > 0
| project Name
SQL-запрос к базе данных Azure PostgreSQL с изменениями
В следующем примере sql-запрос отправляется в базу данных Azure PostgreSQL, из нее извлекают все записи public."Table"
, добавляя другой datetime
столбец, а затем обрабатывает результаты.
Он указывает параметр SQL (@param0
), используемый в SQL-запросе.
evaluate postgresql_request(
'Server=contoso.postgres.database.azure.com; Port = 5432;'
'Database=Fabrikam;'
h'User Id=USERNAME;'
h'Password=PASSWORD;',
'select *, @param0 as dt from public."Table"',
dynamic({'param0': datetime(2020-01-01 16:47:26.7423305)})) : (Id: int, Name: string, dt: datetime)
| where Id > 0
| project Name
SQL-запрос к базе данных Azure PostgreSQL без определяемой запросом выходной схемы
В следующем примере sql-запрос отправляется в базу данных Azure PostgreSQL без выходной схемы. Это не рекомендуется, если схема не неизвестна, так как это может повлиять на производительность запроса.
evaluate postgresql_request(
'Host=contoso.postgres.database.azure.com; Port = 5432;'
'Database=Fabrikam;'
h'User Id=USERNAME;'
h'Password=PASSWORD;',
'select * from public."Table"')
| where Id > 0
| project Name