Sdílet prostřednictvím


modul plug-in postgresql_request

Platí pro: ✅Microsoft FabricAzure Data Explorer

Modul postgresql_request plug-in odešle dotaz SQL do koncového bodu sítě Serveru Azure PostgreSQL a vrátí první sadu řádků ve výsledcích. Dotaz může vrátit více než jednu sadu řádků, ale pro zbytek dotazu Kusto je k dispozici pouze první sada řádků.

Modul plug-in se vyvolá pomocí operátoru evaluate .

Důležité

Modul plug-in postgresql_request je ve výchozím nastavení zakázaný. Pokud chcete modul plug-in povolit, spusťte .enable plugin postgresql_request příkaz. Pokud chcete zjistit, které moduly plug-in jsou povolené, použijte .show plugin příkazy pro správu.

Syntaxe

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

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Type Požadováno Popis
Připojovací řetězec string ✔️ Připojovací řetězec, která odkazuje na koncový bod sítě Serveru PostgreSQL. Podívejte se na ověřování a určení koncového bodu sítě.
SqlQuery string ✔️ Dotaz, který se má spustit na koncovém bodu SQL. Musí vrátit jednu nebo více sad řádků. Pro zbytek dotazu se zpřístupní pouze první sada.
SqlParameters dynamic Objekt kontejneru vlastností, který obsahuje páry klíč-hodnota, které se předávají jako parametry spolu s dotazem.
OutputSchema Názvy a typy očekávaných sloupců výstupu postgresql_request modulu plug-in.

Syntaxe: ( ColumnName : ColumnType [, ...])

Poznámka:

  • Zadání outputSchema je vysoce doporučeno, protože umožňuje použití modulu plug-in ve scénářích, které by jinak bez něj nemusely fungovat, například dotaz mezi clustery. OutputSchema může také povolit více optimalizací dotazů.
  • Pokud schéma spuštění první sady řádků vrácené koncovým bodem sítě SQL neodpovídá schématu OutputSchema , vyvolá se chyba.

Ověřování a autorizace

Pokud chcete autorizovat koncový bod sítě Serveru PostgreSQL, je nutné zadat informace o autorizaci v připojovací řetězec. Podporovaná metoda autorizace je prostřednictvím uživatelského jména a hesla.

Nastavení zásad bublinového popisku

Modul plug-in provádí bublinové popisky do databáze PostgreSQL. Ujistěte se, že zásada popisku clusteru umožňuje volání typu postgresql do cílového identifikátoru PostgreSqlDbUri.

Následující příklad ukazuje, jak definovat zásady popisku pro databáze PostgreSQL. Doporučujeme omezit zásady bublinového popisku na konkrétní koncové body (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
  }
]

Následující příklad ukazuje .alter callout policy příkaz pro postgresql CalloutType:

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

Ověřování pomocí uživatelského jména a hesla

Modul postgresql_request plug-in podporuje pouze ověřování pomocí uživatelského jména a hesla pro koncový bod serveru PostgreSQL a neintegruje se s ověřováním Microsoft Entra.

Uživatelské jméno a heslo se zadají jako součást připojovacího řetězce pomocí následujících parametrů:

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

Upozorňující

Důvěrné nebo chráněné informace by měly být obfuskovány z připojovací řetězec a dotazů, aby byly vynechány z jakéhokoli trasování Kusto. Další informace najdete v obfuskovaných řetězcových literálech.

Ověřování šifrování a serveru

Pro zabezpečení SslMode je bezpodmínečně nastaveno Required při připojování ke koncovému bodu sítě serveru PostgreSQL. V důsledku toho musí být server nakonfigurovaný s platným certifikátem serveru SSL/TLS.

Zadání koncového bodu sítě

Jako součást připojovací řetězec zadejte koncový bod sítě PostgreSQL.

Syntaxe:

Host= Plně kvalifikovaný název domény [ Port = Port]

Kde:

  • Plně kvalifikovaný název domény koncového bodu.
  • Port je port TCP koncového bodu.

Příklady

Dotaz SQL na databázi Azure PostgreSQL

Následující příklad odešle dotaz SQL do databáze Azure PostgreSQL. Načte všechny záznamy z public."Table"a pak zpracuje výsledky.

Poznámka:

Tento příklad by se neměl brát jako doporučení k filtrování nebo projektování dat tímto způsobem. Dotazy SQL by se měly vytvořit tak, aby vrátily nejmenší možnou datovou sadu.

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

Dotaz SQL na databázi Azure PostgreSQL s úpravami

Následující příklad odešle dotaz SQL do databáze Azure PostgreSQL, která načítá všechny záznamy z public."Table", při připojování jiného datetime sloupce a pak zpracuje výsledky. Určuje parametr SQL (@param0), který se má použít v dotazu 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

Dotaz SQL na databázi Azure PostgreSQL bez schématu výstupu definovaného dotazem

Následující příklad odešle dotaz SQL do databáze Azure PostgreSQL bez výstupního schématu. To se nedoporučuje, pokud schéma není neznámé, protože může mít vliv na výkon dotazu.

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