Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo, aprenderá a crear una actividad de script en Azure Data Factory para ejecutar consultas personalizadas de PostgreSQL. Con la actividad de script, puede ejecutar varios tipos de comandos de PostgreSQL, como los comandos Lenguaje de manipulación de datos (DML) y Lenguaje de definición de datos (DDL), directamente en las canalizaciones.
Instrucciones DML:INSERT, UPDATE, DELETEy SELECT
Instrucciones DDL:CREATE, ALTER, y DROP
Prerrequisitos
- Una instancia de servidor flexible de Azure Database for PostgreSQL. Para obtener más información, consulte Create an Azure Database for PostgreSQL.
- (Opcional) Un entorno de ejecución de integración de Azure creado dentro de una red virtual administrada.
- Un servicio vinculado de Azure Data Factory conectado a Azure Database for PostgreSQL.
Creación de una actividad de script
En Azure Data Factory Studio, seleccione el hub de Authoring. Mantenga el puntero sobre la sección Canalizaciones , seleccione ... a la izquierda y seleccione Nueva canalización para crear una nueva canalización.
En General, arrastre y coloque la actividad de script en la canalización.
- En la pestaña General , asigne un nombre a la actividad de script.
Cambie a la pestaña Configuración y seleccione el servicio vinculado de Azure Database for PostgreSQL o cree uno nuevo. Una vez agregado, seleccione Probar conexión para comprobar que la conexión es válida.
Seleccione la opción Consulta o NonQuery en función del script.
La actividad de script admite instrucciones query y nonquery.
Las instrucciones de consulta ejecutan instrucciones PostgreSQL que devuelven resultados. A menudo instrucciones
SELECT. Una instrucción Query devuelve registros de datos.Ejemplo de una carga con una consulta.
{ "name": "Sample of select statement", "type": "Script", "dependsOn": [], "policy": { "timeout": "1.12:00:00", "retry": 0, "retryIntervalInSeconds": 30, "secureOutput": false, "secureInput": false }, "userProperties": [], "linkedServiceName": { "referenceName": "AzurePostgreSQL", "type": "LinkedServiceReference" }, "typeProperties": { "scripts": [ { "type": "Query", "text": "SELECT * FROM sample_table WHERE sample_int = 100; " } ], "scriptBlockExecutionTimeout": "02:00:00" } }
Creación de varios scripts dentro de una actividad de script
Puede incluir varias consultas en una actividad de script seleccionando el + signo situado junto a Script para agregar una nueva entrada de script.
Puede eliminar cuadros de entrada de consulta mediante el icono de eliminación situado junto a Script.
Este es un ejemplo de una carga con dos consultas independientes.
{
"name": "Sample of multiple select statements",
"type": "Script",
"dependsOn": [],
"policy": {
"timeout": "1.12:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"userProperties": [],
"linkedServiceName": {
"referenceName": "AzurePostgreSQL1",
"type": "LinkedServiceReference"
},
"typeProperties": {
"scripts": [
{
"type": "Query",
"text": "SELECT * FROM sample_table WHERE sample_int = 100; "
},
{
"type": "Query",
"text": "SELECT * FROM sample_table WHERE sample_int > 250; "
}
],
"scriptBlockExecutionTimeout": "02:00:00"
}
}
Parámetros de script
Importante
No se admiten sentencias de múltiples consultas con parámetros de salida. Divida las consultas de salida en bloques de script independientes, ya sea dentro de la misma actividad de script o en una actividad de script diferente.
La actividad de script admite dos tipos de parámetros de script: parámetros posicionales y con nombre. Los parámetros con nombre usan el nombre de los parámetros y se especifican como @<name> en las consultas. Los parámetros posicionales usan el índice de los parámetros y se especifican en la consulta en orden como $<position number> con un índice inicial de 1.
Parámetros con nombre (recomendado)
Los parámetros con nombre usan un @ prefijo para el nombre del parámetro.
Establezca como parámetros de salida los parámetros con nombre configurando el valor en null con la casilla Tratar como null activada en la interfaz de usuario, y dejando la carga útil en blanco o null. El valor del texto debe ser NULL.
El nombre establecido en el procedimiento para la salida es el nombre usado dentro de la salida de datos resultSets . El nombre establecido en la fila de salida de la interfaz de usuario se usa para el nombre de outputParameters.
Resultado de ejemplo de la ejecución de la interfaz de usuario
"resultSetCount": 1,
"recordsAffected": 0,
"resultSets": [
{
"rowCount": 1,
"rows": [
{
"output1": 10,
"output2": "\"Hello World\""
}
]
}
],
"outputParameters": {
"output10": 10,
"output20": "\"Hello World\""
}
Ejemplo de carga para el parámetro de salida.
"scripts": [
{
"text": "CREATE OR REPLACE PROCEDURE swap_proc (input1 IN TEXT, input2 IN BIGINT, output1 OUT BIGINT, output2 OUT TEXT) LANGUAGE plpgsql AS $$ DECLARE BEGIN output2 := input1; output1 := input2; END $$",
"type": "NonQuery"
},
{
"text": "CALL swap_proc(@input1, @input2, null, null)",
"type": "Query",
"parameters": [
{
"name": "input1",
"type": "String",
"value": "Hello world",
"direction": "Input",
"size": 100
},
{
"name": "input2",
"type": "INT32",
"value": 1234,
"direction": "Input"
},
{
"name": "output1",
"type": "INT32",
"direction": "Output"
},
{
"name": "output2",
"type": "String",
"direction": "Output",
"size": 100
}
]
}
]
Parámetros posicionales
Importante
No se admiten instrucciones de varias consultas mediante parámetros posicionales. Asegúrese de que las consultas con parámetros posicionales estén en bloques de script independientes dentro de la misma actividad de script o diferente.
Para usar parámetros posicionales, use un marcador de posición de $<positional number> en la consulta. En parámetros, el name campo debe dejarse en blanco en la interfaz de usuario y especificarlo como null en la carga.
"scripts": [
{
"text": "SELECT * FROM customers WHERE first_name = $1 AND age = $2;",
"type": "Query",
"parameters": [
{
"name": null,
"type": "String",
"value": "John",
"direction": "Input",
"size": 256
},
{
"name": null,
"type": "INT32",
"value": 52,
"direction": "Input"
}
]
}
]
Ejemplo de parámetro posicional válido
"scripts": [
{
"text": "SELECT * FROM customers WHERE first_name = $1;",
"type": "Query",
"parameters": [
{
"name": null,
"type": "String",
"value": "John",
"direction": "Input",
"size": 256
}
]
},
{
"text": "SELECT * FROM customers WHERE age = $2;",
"type": "Query",
"parameters": [
{
"name": null,
"type": "INT32",
"value": 52,
"direction": "Input"
}
]
}
]
Ejemplo de parámetro posicional no válido
"scripts": [
{
"text": "SELECT * FROM customers WHERE first_name = $1; SELECT * FROM customers WHERE age = $2;",
"type": "Query",
"parameters": [
{
"name": null,
"type": "String",
"value": "John",
"direction": "Input",
"size": 256
},
{
"name": null,
"type": "INT32",
"value": 52,
"direction": "Input"
}
]
}
]
Configuración avanzada
La configuración avanzada de la actividad de script de Azure Data Factory para PostgreSQL le permite ajustar las opciones de ejecución y registro de los flujos de trabajo de datos. Puede establecer tiempos de espera de bloqueo de script para impedir que las consultas de larga duración afecten a la confiabilidad de la canalización y active el registro detallado para realizar un seguimiento de los avisos y resultados de actividad de PostgreSQL. Estas características ayudan a mantener las operaciones de datos seguras y le proporcionan más visibilidad sobre las ejecuciones de canalización en Azure.
Tiempo de espera de ejecución del bloque de scripts
Establezca un tiempo de espera en minutos para cada ejecución de bloque de script. Si algún bloque de script de la actividad de script supera el tiempo de espera, se produce un error en toda la actividad.
"typeProperties": {
"scripts": [
{
"type": "Query",
"text": "SELECT pg_sleep(40);"
},
{
"type": "Query",
"text": "SELECT pg_sleep(40);"
},
{
"type": "Query",
"text": "SELECT pg_sleep(40);"
}
],
"scriptBlockExecutionTimeout": "00:01:00"
}
Registro
Use el registro para enviar avisos de PostgreSQL a un almacenamiento externo de Blob Storage o al almacenamiento interno.
Almacenamiento externo
Para el registro externo, abra la pestaña Avanzadas y seleccione Habilitar registro y Almacenamiento externo. Agregue una cuenta de Blob Storage mediante la creación de un nuevo servicio vinculado para la cuenta de Blob Storage. Opcionalmente, puede escribir una ruta de acceso de carpeta. Si lo deja en blanco, los registros se incluyen en la carpeta scriptactivity-logs .
"typeProperties": {
"scripts": [
{
"type": "Query",
"text": "DO $$ BEGIN RAISE Notice 'Hello'; RAISE Notice 'World!'; END $$;"
}
],
"scriptBlockExecutionTimeout": "02:00:00",
"logSettings": {
"logDestination": "ExternalStore",
"logLocationSettings": {
"linkedServiceName": {
"referenceName": "<Azure Blob Storage linked service name>",
"type": "LinkedServiceReference"
},
"path": "<Azure Blob Storage folder path>"
}
}
}
Salida de la actividad
Para el registro de salida de actividad, expanda la sección Opciones avanzadas y seleccione Habilitar registro y salida de actividad. Estas opciones activan el registro en la salida de la actividad.
"typeProperties": {
"scripts": [
{
"type": "Query",
"text": "DO $$ BEGIN RAISE Notice 'Hello'; RAISE Notice 'World!'; END $$;"
}
],
"scriptBlockExecutionTimeout": "02:00:00",
"logSettings": {
"logDestination": "ActivityOutput"
}
}