Поделиться через


подключаемый модуль postgresql_request

Область применения: ✅Microsoft Fabric✅Azure Data Explorer

Подключаемый postgresql_request модуль отправляет SQL-запрос в конечную точку сети Azure PostgreSQL Server и возвращает первый набор строк в результатах. Запрос может возвращать несколько наборов строк, но для остальной части запроса Kusto доступен только первый набор строк.

Подключаемый модуль вызывается оператором evaluate .

Внимание

Подключаемый postgresql_request модуль отключен по умолчанию. Чтобы включить подключаемый модуль, выполните .enable plugin postgresql_request команду. Чтобы узнать, какие подключаемые модули включены, используйте .show plugin команды управления.

Синтаксис

evaluatepostgresql_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