Compartir a través de


Complemento postgresql_request

Se aplica a: ✅Microsoft FabricAzure Data Explorer

El postgresql_request complemento envía una consulta SQL a un punto de conexión de red de Azure PostgreSQL Server y devuelve el primer conjunto de filas de los resultados. La consulta puede devolver más de un conjunto de filas, pero solo el primer conjunto de filas está disponible para el resto de la consulta de Kusto.

El complemento se invoca con el evaluate operador .

Importante

El postgresql_request complemento está deshabilitado de forma predeterminada. Para habilitar el complemento, ejecute el .enable plugin postgresql_request comando . Para ver qué complementos están habilitados, use .show plugin comandos de administración.

Sintaxis

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

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Type Obligatorio Descripción
ConnectionString string ✔️ El cadena de conexión que apunta al punto de conexión de red de PostgreSQL Server. Consulte autenticación y cómo especificar el punto de conexión de red.
SqlQuery string ✔️ Consulta que se va a ejecutar en el punto de conexión de SQL. Debe devolver uno o varios conjuntos de filas. Solo el primer conjunto está disponible para el resto de la consulta.
SqlParameters dynamic Objeto de contenedor de propiedades que contiene pares clave-valor para pasar como parámetros junto con la consulta.
OutputSchema Los nombres y tipos de las columnas esperadas de la salida del postgresql_request complemento.

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

Nota:

  • Se recomienda especificar OutputSchema, ya que permite usar el complemento en escenarios que podrían no funcionar sin él, como una consulta entre clústeres. OutputSchema también puede habilitar varias optimizaciones de consulta.
  • Se produce un error si el esquema en tiempo de ejecución del primer conjunto de filas devuelto por el punto de conexión de red SQL no coincide con el esquema OutputSchema .

Autenticación y autorización

Para autorizar un punto de conexión de red de PostgreSQL Server, debe especificar la información de autorización en el cadena de conexión. El método de autorización admitido es a través del nombre de usuario y la contraseña.

Establecimiento de la directiva de llamada

El complemento realiza llamadas a la base de datos postgreSQL. Asegúrese de que la directiva de llamada del clúster habilita las llamadas de tipo postgresql a PostgreSqlDbUri de destino.

En el ejemplo siguiente se muestra cómo definir la directiva de llamada para las bases de datos postgreSQL. Se recomienda restringir la directiva de llamada a puntos de conexión específicos (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
  }
]

En el ejemplo siguiente se muestra un .alter callout policy comando para postgresql CalloutType:

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

Autenticación mediante nombre de usuario y contraseña

El postgresql_request complemento solo admite la autenticación de nombre de usuario y contraseña en el punto de conexión del servidor postgreSQL y no se integra con la autenticación de Microsoft Entra.

El nombre de usuario y la contraseña se proporcionan como parte de la cadena de conexiones mediante los parámetros siguientes:

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

Advertencia

La información confidencial o protegida debe ofuscarse de cadena de conexión y consultas para que se omitan de cualquier seguimiento de Kusto. Para obtener más información, consulte literales de cadena ofuscados.

Cifrado y validación del servidor

Para la seguridad, SslMode se establece incondicionalmente en Required al conectarse a un punto de conexión de red del servidor postgreSQL. Como resultado, el servidor debe configurarse con un certificado de servidor SSL/TLS válido.

Especificar el punto de conexión de red

Especifique el punto de conexión de red de PostgreSQL como parte del cadena de conexión.

Sintaxis:

Host= FQDN [Port = Puerto]

Donde:

  • FQDN es el nombre de dominio completo del punto de conexión.
  • El puerto es el puerto TCP del punto de conexión.

Ejemplos

Consulta SQL a Azure PostgreSQL DB

En el ejemplo siguiente se envía una consulta SQL a una base de datos de Azure PostgreSQL. Recupera todos los registros de public."Table"y, a continuación, procesa los resultados.

Nota:

Este ejemplo no se debe tomar como recomendación para filtrar o proyectar datos de esta manera. Las consultas SQL se deben construir para devolver el conjunto de datos más pequeño posible.

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

Consulta SQL a una base de datos de Azure PostgreSQL con modificaciones

En el ejemplo siguiente se envía una consulta SQL a una base de datos de Azure PostgreSQL que recupera todos los registros de public."Table", al anexar otra datetime columna y, a continuación, se procesan los resultados. Especifica un parámetro SQL (@param0) que se va a usar en la consulta 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

Consulta SQL a una base de datos de Azure PostgreSQL sin un esquema de salida definido por la consulta

En el ejemplo siguiente se envía una consulta SQL a una base de datos de Azure PostgreSQL sin un esquema de salida. Esto no se recomienda a menos que el esquema sea desconocido, ya que puede afectar al rendimiento de la consulta.

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