En este documento, se muestra cómo usar JavaScript para crear elementos de flujo de trabajo de SQL en Dataform. Se recomienda usar JavaScript en Dataform Core crear elementos similares repetidamente en tu flujo de trabajo.
Acerca del desarrollo de flujos de trabajo en Dataform con JavaScript
Dataform Núcleo te permite puedes crear acciones de flujo de trabajo de SQL con SQLX y JavaScript. Con JavaScript, Puedes crear acciones similares repetidamente en tu flujo de trabajo. Por ejemplo, puede crear una vista de cada tabla en su flujo de trabajo sin ciertos ID de usuario.
La siguiente muestra de código JavaScript te permite crear una vista de cada tabla en la que
el valor del campo user_id
no corresponde a uno de los valores de la
Lista blocked_user_ids
:
const tableNames = ["user_events", "user_settings", "user_logs"];
tableNames.forEach(tableName => {
publish(tableName + "_blocked_removed").query(
ctx => `
SELECT * FROM ${ctx.ref(tableName)}
WHERE user_id NOT IN (
SELECT user_id
FROM ${ctx.ref("blocked_user_ids")}
)`
);
});
Esta muestra de código crea tres vistas denominadas
user_events_blocked_removed
, user_settings_blocked_removed
y
user_logs_blocked_removed
que no contengan ninguno de los IDs de usuario bloqueados.
Puedes crear varias acciones en un archivo JavaScript con métodos globales de Dataform y código arbitrario de JavaScript ES5, como como bucles y constantes.
Puedes definir las siguientes acciones con JavaScript en Dataform:
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.
Roles obligatorios
Para obtener los permisos que necesitas para desarrollar un flujo de trabajo de SQL con JavaScript,
solicita a tu administrador que te otorgue el
Es 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.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Crea un archivo JavaScript en Dataform
Almacena archivos JavaScript para definiciones y declaraciones de fuente de datos en el
definitions/
. Para crear un nuevo archivo JavaScript en el archivo definitions/
de la aplicación, sigue estos pasos:
En el panel Archivos, junto a
definitions/
, haz clic en el Menú MásHaz clic en Crear archivo.
En el panel Crear archivo nuevo, haz lo siguiente:
En el campo Agregar una ruta de acceso al archivo, después de
definitions/
, ingresa el nombre. del archivo seguido de.js
. Por ejemplo,definitions/definitions.js
Los nombres de archivo solo pueden incluir números, letras, guiones y guiones bajos.
Haz clic en Crear archivo.
Configura propiedades del objeto de flujo de trabajo de SQL de Dataform con JavaScript
Puedes usar los siguientes métodos globales de Dataform para crear SQL. Objetos de flujo de trabajo con Dataform:
declare
Se usa para declarar una fuente de datos.publish
Se usa para definir una tabla.assert
Se usa para crear una aserción.operate
Se usa para definir una operación de SQL personalizada.
Cada uno de los métodos globales contiene propiedades que puedes usar para configurar la objeto creado. Para obtener más información sobre los métodos globales y sus propiedades, consulta la referencia principal de Dataform.
En el método publish()
que crea una tabla, puedes establecer las propiedades de la tabla.
pasándolas como el segundo argumento del método.
Para pasar propiedades de la tabla como el segundo argumento de publish()
, haz lo siguiente:
sigue estos pasos:
En el lugar de trabajo de desarrollo, en el panel Files, expande
definitions/
.Selecciona un archivo JavaScript.
En el archivo, agrega propiedades de tabla al método
publish()
. en el siguiente formato:method("first_method_argument", { property1: "property1_value", property2: "property2_value", property3: "property3_value", });
Opcional: Haz clic en Formato.
En la siguiente muestra de código, se indica cómo establecer propiedades en el método publish()
Si pasas las propiedades como un segundo argumento del método:
publish("table1", {
type: "table",
dependencies: ["other_table"],
description: {
"Value is 1"
}
}).query(ctx => "SELECT 1 AS test");
Inclusiones de referencia en un archivo JavaScript
Puedes hacer referencia a cualquier función de inclusión, macro o constante dentro de un código . Para obtener más información sobre inclusiones en Dataform, consulta Reutiliza variables y funciones con inclusiones de JavaScript.
La sintaxis para hacer referencia a inclusiones dentro de un archivo JavaScript depende del del archivo de inclusión. Dataform almacena estos archivos en el include.
La referencia de nivel superior incluye
- Para hacer referencia a un archivo de inclusiones de nivel superior, haz referencia al nombre de archivo cuando declarar tus variables.
La siguiente muestra de código hace referencia a serviceName
y serviceId
del archivo includes/service.js
:
const {serviceName, serviceId} = service;
Inclusiones anidadas de referencias
Para hacer referencia a un archivo de inclusiones anidados, ingresa el nombre del archivo en el código la función kubectl.
La siguiente muestra de código hace referencia a serviceName
y serviceId
del archivo includes/allServices/service.js
:
const {serviceName, serviceId} = require("includes/allServices/service.js");
Usa funciones de consulta de Dataform en métodos de JavaScript
Dataform proporciona una serie de funciones integradas que puedes usar.
dentro de las consultas, como ref
y self
. Para obtener más información
Funciones integradas de Dataform, consulta la
Referencia de la API de Dataform.
Para usar una función de consulta integrada en un método de JavaScript, sigue estos pasos:
En el lugar de trabajo de desarrollo, en el panel Files, expande
definitions/
.Selecciona un archivo JavaScript.
En el archivo, ingresa un método global de Dataform para JavaScript.
En el método, ingresa un argumento
ctx
contextual.Opcional: Si usas cadenas de plantilla de JavaScript, une los argumento contextual entre acentos graves ``.
En el argumento contextual, ingresa la función de consulta con su parámetro como un objeto de contexto.
Opcional: Haz clic en Formato.
En la siguiente muestra de código, se observa la función de consulta ref
unida a una
Es un argumento contextual del método publish:
publish("example").query(ctx => `SELECT * FROM ${ctx.ref("other_table")}`);
Declara una fuente de datos de flujo de trabajo de SQL con JavaScript
Puedes declarar varias fuentes de datos en un archivo de declaración de JavaScript con el método de declaración de JavaScript de Dataform. Para obtener más información Para el método de declaración, consulta la referencia principal de Dataform. Para ver más información sobre las fuentes de datos en Dataform, consulta Declara una fuente de datos.
Para declarar una fuente de datos en un archivo JavaScript, sigue estos pasos:
En el lugar de trabajo de desarrollo, en el panel Files, expande definiciones/.
Selecciona un archivo JavaScript.
En el archivo, ingresa el siguiente fragmento de código:
declare({ database: "DATABASE_PROJECT_ID", schema: "BIGQUERY_SCHEMA", name: "RELATION_NAME", });
Reemplaza lo siguiente:
DATABASE_PROJECT_ID
: El ID del proyecto que contiene la fuente de datosBIGQUERY_SCHEMA
: Es el conjunto de datos de BigQuery en el que se existe relación externaRELATION_NAME
: Es el nombre de la relación que puedes usar más adelante. hacer referencia a la fuente de datos en Dataform
Para declarar otra fuente de datos en el mismo archivo, agrega un
declare
adicional. bloque al archivo.Opcional: Haz clic en Formato.
Cómo definir una tabla con JavaScript
Puedes crear una tabla con el publish
de JavaScript de Dataform.
. Para obtener más información sobre el método de publicación, consulta la
Referencia principal de Dataform.
Puedes definir los siguientes tipos de tablas: tabla, tabla incremental y vista. Para obtener más información sobre cómo definir tablas en Dataform, consulta Crea una tabla.
Para definir una tabla en un archivo JavaScript, sigue estos pasos:
En el lugar de trabajo de desarrollo, en el panel Files, expande
definitions/
.Selecciona un archivo JavaScript.
En el archivo, ingresa el siguiente fragmento de código:
publish("TABLE_NAME").query(ctx => "SELECT_QUERY");
Reemplaza
TABLE_NAME
por el nombre de la tabla.Reemplaza
SELECT_QUERY
por una sentencia SELECT de SQL definir la tabla.
Para establecer el tipo de tabla, agrega las dependencias y la descripción de la tabla, Se establece las propiedades del objeto del método
publish
.Para definir otra tabla en el mismo archivo, repite los pasos 3 y 4.
Opcional: Haz clic en Formato.
Cómo definir aserciones manuales de Dataform con JavaScript
Puedes crear aserciones de SQL manuales en un archivo JavaScript con el Es el método de JavaScript con aserción de Dataform. Para obtener más información sobre el assert, consulta la Referencia principal de Dataform.
Una consulta en SQL de aserción manual debe mostrar cero filas. Si la consulta muestra filas cuando se ejecuta, la aserción falla. Puedes crear varias aserciones en una Archivo JavaScript.
Para obtener más información sobre las aserciones en Dataform, consulta Prueba tablas con aserciones.
Sigue estos pasos para crear una aserción manual en un archivo JavaScript:
En el lugar de trabajo de desarrollo, en el panel Files, expande
definitions/
.Selecciona un archivo JavaScript.
En el archivo, ingresa el siguiente fragmento de código:
assert("ASSERTION_NAME").query(ctx => "CUSTOM_ASSERTION_QUERY");
Reemplaza
ASSERTION_NAME
por el nombre de tu elemento personalizado. .Reemplaza
CUSTOM_ASSERTION_QUERY
por tu SQL. una aserción de cliente.
Para crear otra aserción en el mismo archivo, repite el paso 3.
Opcional: Haz clic en Formato.
En la siguiente muestra de código aparece una aserción de JavaScript que indica que no
valor en source_table
es NULL
:
assert("assertion1").query(ctx => "SELECT * FROM source_table WHERE value IS NULL");
Define operaciones personalizadas de SQL con JavaScript
Puedes definir operaciones SQL personalizadas en un archivo JavaScript con el Usa el método JavaScript de Dataform. Para obtener más información operaciones personalizadas de SQL en Dataform, consulta Agrega operaciones de SQL personalizadas.
Para definir una operación de SQL personalizada con JavaScript, sigue estos pasos:
En el lugar de trabajo de desarrollo, en el panel Files, expande
definitions/
.Selecciona un archivo JavaScript.
En el archivo, ingresa el siguiente fragmento de código:
operate("OPERATION_NAME").queries(ctx => "CUSTOM_SQL_QUERY");
Reemplaza
OPERATION_NAME
por el nombre del elemento personalizado. una sola operación.Reemplaza
CUSTOM_SQL_QUERY
por tu consulta en SQL personalizada.
Para definir otra operación SQL personalizada en el mismo archivo, repite el paso 3.
Opcional: Haz clic en Formato.
En la siguiente muestra de código, aparece una operación SQL personalizada en un archivo JavaScript que
Inserta una sola fila nueva en some_table
y establece test_column
de la fila nueva.
a 2
:
operate("operation1").queries("INSERT INTO some_table (test_column) VALUES (2)");
¿Qué sigue?
- Para obtener más información sobre los métodos de Dataform JavaScript y funciones de consulta, consulta la Referencia principal de Dataform.
- Para obtener más información sobre el desarrollo en Dataform con JavaScript, consulta Introducción a JavaScript en Dataform.