Dataform puede ejecutar operaciones de SQL personalizadas que no se ajustan al modelo de Dataform para publicar una tabla o escribir una aserción. Puedes definir comandos de SQL personalizados para que Dataform se ejecute en BigQuery.
Antes de comenzar
En la consola de Google Cloud, ve a la página Dataform.
Selecciona o crea un repositorio.
Selecciona o crea un lugar de trabajo de desarrollo.
Funciones obligatorias
Si quieres obtener los permisos que necesitas para definir una operación de SQL personalizada,
pídele a tu administrador que te otorgue el
rol de IAM de Editor de Dataform (roles/dataform.editor
) en los lugares de trabajo.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.
Es posible que también puedas obtener los permisos necesarios mediante funciones personalizadas, o bien otras funciones predefinidas.
Crea un archivo para la definición de la operación personalizada
Almacena archivos SQLX de definición de operación personalizada en el directorio definitions/
.
Para crear un archivo SQLX nuevo en el directorio definitions/
, sigue estos pasos:
- Ve a tu lugar de trabajo de desarrollo.
- En el panel Files, junto a
definitions/
, haz clic en el menú More de . - Haz clic en Crear archivo.
En el campo Agregar una ruta de acceso al archivo, ingresa el nombre del archivo, seguido de
.sqlx
despué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 personalizadas de SQL en un archivo SQLX.
BigQuery ejecuta todas las operaciones en un archivo en el mismo contexto y crea el SQL ejecutado mediante la unión de todas las operaciones con un punto y coma ;
.
Para definir varias operaciones personalizadas de SQL cuando usas el framework de Dataform de código abierto 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 el lugar de trabajo de desarrollo, selecciona el archivo SQLX para la definición de la operación personalizada.
En el archivo, ingresa el siguiente fragmento de código:
config { type: "operations" }
Fuera del bloque
config
, escribe la operación de SQL.Opcional: Haz clic en Formato.
En la siguiente muestra de código, se incluyen varias operaciones personalizadas de SQL 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 ve 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 de referencia
Puedes crear una tabla de forma manual en una operación de SQL personalizada a la que puedas hacer referencia en otras secuencias de comandos. Si quieres crear una tabla disponible para otras secuencias de comandos, debes declarar que la operación tiene un resultado.
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
.
Si deseas crear una tabla en una operación personalizada y hacer que esté disponible para otras secuencias de comandos, sigue estos pasos:
- En tu lugar de trabajo de desarrollo, selecciona el archivo SQLX para la definición de la operación personalizada.
En el archivo SQLX, ingresa el siguiente fragmento de código:
config { type: "operations", hasOutput: true }
Opcional: Para hacer coincidir el nombre de la tabla de salida con el nombre del archivo, escribe una operación
CREATE
de SQL con la funciónself
en el siguiente formato:CREATE OR REPLACE TABLE ${self()} AS (CUSTOM_SQL_QUERY)
Reemplaza CUSTOM_SQL_QUERY por la instrucción
SELECT
de SQL de definición de tablas.Opcional: Haz clic en Formato.
Cómo hacer referencia a una tabla de resultados de una operación de SQL personalizada
- Para hacer referencia a una tabla de resultados de una operación de SQL personalizada en una definición de SQLX de una tabla diferente, ingresa el nombre de archivo de la tabla de salida en la función
ref
.
En la siguiente muestra de código, se presenta una operación de SQL personalizada en un archivo custom_SQL_operation_table.sqlx
que crea una tabla de 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 la siguiente muestra de código, se puede hacer referencia a custom\_SQL\_operation\_table table
en un archivo SQLX de definición de tablas:
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 objetos de flujo de trabajo de SQL, 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 función
CREATE TABLE
en un archivotype: "operations"
en 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 ve una operación de SQL personalizada que crea una tabla vacía con un número entero y una columna de cadena. Otros objetos de flujo de trabajo de SQL no pueden hacer referencia a la tabla vacía creada:
config {
type: "operations"
}
CREATE TABLE ${self()} (
x INT64,
y STRING
)
¿Qué sigue?
- Para aprender a crear operaciones personalizadas de SQL con JavaScript, consulta Crea flujos de trabajo de SQL con JavaScript.
- Para aprender a activar ejecuciones de forma manual, consulta Activa la ejecución.
- Para aprender a usar el DML de BigQuery, consulta Usa el lenguaje de manipulación de datos (DML).
- Para obtener más información sobre la función
self
y otras funciones integradas de Dataform, consulta la API de Dataform.