Dataform puede ejecutar operaciones de SQL personalizadas que no se ajustan al modelo de Dataform de publicar una tabla o escribir una aserción. Puedes definir comandos de SQL personalizados para que Dataform los ejecute en BigQuery.
Antes de comenzar
En la Google Cloud consola de, ve a la página Dataform.
Selecciona o crea un repositorio.
Selecciona o crea un espacio de trabajo de desarrollo.
Roles obligatorios
Para obtener los permisos que
necesitas para definir una operación de SQL personalizada,
pídele a tu administrador que te otorgue el
rol de editor de Dataform (roles/dataform.editor) de IAM en los espacios de trabajo.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Crea un archivo para la definición de operaciones personalizadas
Almacena archivos SQLX de definición de operaciones personalizadas en el directorio definitions/.
Para crear un archivo SQLX nuevo en el directorio definitions/, sigue estos pasos:
- Ve a tu espacio de trabajo de desarrollo.
- En el panel Archivos, junto a
definitions/, haz clic en el
menú Más. - Haz clic en Crear archivo.
En el campo Agregar una ruta de archivo, ingresa el nombre del archivo seguido de
.sqlxdespués dedefinitions/. Por ejemplo,definitions/sample-operation.sqlx.Los nombres de archivo solo pueden incluir números, letras, guiones y guiones bajos.
Haz clic en Crear archivo.
Define una operación de SQL personalizada
Puedes definir una operación de SQL personalizada en un archivo SQLX de type: operations.
Puedes escribir cualquier instrucción de SQL de BigQuery en un archivo operations.
Dataform ejecuta tus operaciones de SQL personalizadas en BigQuery sin modificaciones.
Puedes definir varias operaciones de SQL personalizadas en un archivo SQLX.
BigQuery ejecuta todas las operaciones en un archivo en el mismo contexto y crea el SQL de ejecución uniendo todas las operaciones con un punto y coma (;).
Para definir varias operaciones de SQL personalizadas cuando usas el framework de código abierto
de Dataform
con un almacén de datos que no sea BigQuery,
separa las operaciones con ---.
Para definir una operación de SQL personalizada en un archivo SQLX dedicado, sigue estos pasos:
- En tu espacio de trabajo de desarrollo, selecciona el archivo SQLX para la definición de operaciones personalizadas.
En el archivo, ingresa el siguiente fragmento de código:
config { type: "operations" }Fuera del bloque
config, escribe tu operación de SQL.Opcional: Haz clic en Formato.
En la siguiente muestra de código, se muestran varias operaciones de SQL personalizadas definidas en un archivo operations:
config { type: "operations" }
DELETE FROM dataset.table WHERE country = 'GB';
DELETE FROM dataset.table WHERE country = 'FR';
En la siguiente muestra de código, se muestra una operación de SQL personalizada que crea una vista de forma manual:
config { type: "operations" }
CREATE OR REPLACE VIEW dataset.table AS (SELECT 1 AS TEST)
Crea una tabla de salida a la que se pueda hacer referencia
Puedes crear una tabla de forma manual en una operación de SQL personalizada a la que puedes hacer referencia en otras secuencias de comandos. Para crear una tabla disponible para otras secuencias de comandos, debes declarar que la operación tiene una salida.
Para que el nombre de la tabla de salida coincida con el nombre del archivo operations, puedes usar la función self en la operación CREATE.
Para crear una tabla en una operación personalizada y que esté disponible para otras secuencias de comandos, sigue estos pasos:
- En tu espacio de trabajo de desarrollo, selecciona el archivo SQLX para la definición de operaciones personalizadas.
En el archivo SQLX, ingresa el siguiente fragmento de código:
config { type: "operations", hasOutput: true }Para que coincida el nombre de la tabla de resultado con el nombre del archivo, escribe una operación
CREATEde SQL con la funciónselfen el siguiente formato:CREATE OR REPLACE TABLE ${self()} AS (CUSTOM_SQL_QUERY)Reemplaza CUSTOM_SQL_QUERY por tu instrucción
SELECTde SQL de definición de tabla.Opcional: Haz clic en Formato.
Haz referencia a una tabla de salida de operación de SQL personalizada
- Para hacer referencia a una tabla de salida de operación de SQL personalizada en una definición SQLX de una tabla diferente, ingresa el nombre de archivo de la tabla de salida en la función
ref.
En el siguiente muestra de código, se muestra una operación de SQL personalizada en un
custom_SQL_operation_table.sqlx archivo que crea una tabla a la que se puede hacer referencia
llamada custom_SQL_operation_table:
// filename is custom_SQL_operation_table.sqlx
config {
type: "operations",
hasOutput: true
}
CREATE OR REPLACE VIEW ${self()} AS (SELECT 1 AS TEST)
En el siguiente muestra de código, se muestra cómo hacer referencia a la custom\_SQL\_operation\_table table en un archivo SQLX de definición de tabla:
config { type: "table" }
SELECT * FROM ${ref("custom_SQL_operation_table")}
Crea una tabla vacía
Es posible que desees crear una tabla vacía para que un servicio diferente pueda propagarla con datos. Puedes crear una tabla vacía en una operación de SQL personalizada con la función CREATE TABLE. Para poder hacer referencia a la tabla vacía en otras definiciones de acciones de flujo de trabajo, por ejemplo, tablas y vistas, puedes agregar la propiedad hasOutput:true al bloque config de la operación de tabla vacía.
- Para crear una tabla vacía, usa la
CREATE TABLEfunción en untype: "operations"archivo con el siguiente formato:
config {
type: "operations",
hasOutput: true // optional, lets you reference the empty table
}
CREATE TABLE ${self()} (
)
En la siguiente muestra de código, se muestra una operación de SQL personalizada que crea una tabla vacía con un número entero y una columna de cadena. Otras acciones de flujo de trabajo no pueden hacer referencia a la tabla vacía creada:
config {
type: "operations"
}
CREATE TABLE ${self()} (
x INT64,
y STRING
)
¿Qué sigue?
- Para obtener información sobre cómo crear operaciones de SQL personalizadas con JavaScript, consulta Crea flujos de trabajo exclusivamente con JavaScript.
- Para obtener información sobre cómo activar ejecuciones de forma manual, consulta Activa ejecuciones de forma manual.
- Para obtener información sobre cómo usar DML de BigQuery, consulta Usa el lenguaje de manipulación de datos (DML).
- Para obtener más información sobre la función
selfy otras funciones integradas de Dataform, consulta la API de Dataform.