Udostępnij za pośrednictwem


wtyczka postgresql_request

Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer

Wtyczka postgresql_request wysyła zapytanie SQL do punktu końcowego sieci serwera Azure PostgreSQL i zwraca pierwszy zestaw wierszy w wynikach. Zapytanie może zwrócić więcej niż jeden zestaw wierszy, ale tylko pierwszy zestaw wierszy jest dostępny dla pozostałej części zapytania Kusto.

Wtyczka jest wywoływana z operatorem evaluate .

Ważne

Wtyczka postgresql_request jest domyślnie wyłączona. Aby włączyć wtyczkę, uruchom .enable plugin postgresql_request polecenie . Aby sprawdzić, które wtyczki są włączone, użyj .show plugin poleceń zarządzania.

Składnia

evaluatepostgresql_request ( ConnectionString SqlQuery [, SqlParameters] ) [: OutputSchema] ,

Dowiedz się więcej na temat konwencji składni.

Parametry

Nazwisko Type Wymagania opis
ConnectionString string ✔️ Parametry połączenia wskazujący punkt końcowy sieci serwera PostgreSQL. Zobacz uwierzytelnianie i sposób określania punktu końcowego sieci.
Zapytanie sql string ✔️ Zapytanie, które ma zostać wykonane względem punktu końcowego SQL. Musi zwrócić co najmniej jeden zestaw wierszy. Tylko pierwszy zestaw jest udostępniany dla pozostałej części zapytania.
Parametry sql dynamic Obiekt torby właściwości, który przechowuje pary klucz-wartość do przekazania jako parametry wraz z zapytaniem.
OutputSchema Nazwy i typy oczekiwanych kolumn danych wyjściowych postgresql_request wtyczki.

Składnia: ( ColumnName : ColumnType [, ...])

Uwaga

  • Określenie parametru OutputSchema jest zdecydowanie zalecane, ponieważ umożliwia użycie wtyczki w scenariuszach, które w przeciwnym razie mogą nie działać bez niego, takich jak zapytanie między klastrami. Moduł OutputSchema może również włączyć wiele optymalizacji zapytań.
  • Błąd jest zgłaszany, jeśli schemat czasu wykonywania pierwszego zestawu wierszy zwrócony przez punkt końcowy sieci SQL nie jest zgodny ze schematem OutputSchema .

Uwierzytelnianie i autoryzacja

Aby autoryzować punkt końcowy sieci serwera PostgreSQL, należy określić informacje o autoryzacji w parametry połączenia. Obsługiwana metoda autoryzacji odbywa się za pośrednictwem nazwy użytkownika i hasła.

Ustawianie zasad objaśnienie

Wtyczka wywołuje bazę danych PostgreSQL. Upewnij się, że zasady objaśnienia klastra umożliwiają wywołania typu postgresql do docelowego identyfikatora PostgreSqlDbUri.

W poniższym przykładzie pokazano, jak zdefiniować zasady objaśnienie dla baz danych PostgreSQL. Zalecamy ograniczenie zasad objaśnień do określonych punktów końcowych (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
  }
]

W poniższym przykładzie pokazano .alter callout policy polecenie postgresql calloutType:

.alter cluster policy callout @'[{"CalloutType": "postgresql", "CalloutUriRegex": "\\.postgresql\\.database\\.azure\\.com", "CanCall": true}]'

Uwierzytelnianie nazwy użytkownika i hasła

Wtyczka postgresql_request obsługuje tylko uwierzytelnianie nazwy użytkownika i hasła do punktu końcowego serwera PostgreSQL i nie integruje się z uwierzytelnianiem firmy Microsoft Entra.

Nazwa użytkownika i hasło są udostępniane jako część parametrów połączeń przy użyciu następujących parametrów:

User ID=...; Password=...;

Ostrzeżenie

Poufne lub chronione informacje powinny być zaciemnione z parametry połączenia i zapytań, aby zostały pominięte z dowolnego śledzenia Usługi Kusto. Aby uzyskać więcej informacji, zobacz zaciemnione literały ciągu.

Szyfrowanie i walidacja serwera

W przypadku zabezpieczeń SslMode parametr jest bezwarunkowo ustawiony na Required wartość podczas nawiązywania połączenia z punktem końcowym sieci serwera PostgreSQL. W związku z tym serwer musi być skonfigurowany przy użyciu prawidłowego certyfikatu serwera SSL/TLS.

Określanie punktu końcowego sieci

Określ punkt końcowy sieci PostgreSQL w ramach parametry połączenia.

Składnia:

Host= Nazwa FQDN [ Port = Port]

Gdzie:

  • Nazwa FQDN jest w pełni kwalifikowaną nazwą domeny punktu końcowego.
  • Port to port TCP punktu końcowego.

Przykłady

Zapytanie SQL do bazy danych Azure PostgreSQL

Poniższy przykład wysyła zapytanie SQL do bazy danych Azure PostgreSQL. Pobiera wszystkie rekordy z public."Table"elementu , a następnie przetwarza wyniki.

Uwaga

Ten przykład nie powinien być traktowany jako zalecenie dotyczące filtrowania lub filtrowania danych projektu w ten sposób. Zapytania SQL powinny być konstruowane w celu zwrócenia najmniejszego możliwego zestawu danych.

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

Zapytanie SQL do bazy danych Azure PostgreSQL z modyfikacjami

Poniższy przykład wysyła zapytanie SQL do bazy danych Azure PostgreSQL, pobierając wszystkie rekordy z public."Table"elementu , dołączając kolejną datetime kolumnę, a następnie przetwarza wyniki. Określa parametr SQL (@param0) do użycia w zapytaniu 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

Zapytanie SQL do bazy danych Azure PostgreSQL bez schematu danych wyjściowych zdefiniowanych przez zapytanie

Poniższy przykład wysyła zapytanie SQL do bazy danych Azure PostgreSQL bez schematu wyjściowego. Nie jest to zalecane, chyba że schemat jest nieznany, ponieważ może to mieć wpływ na wydajność zapytania

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