Dataform core te permite crear acciones de flujo de trabajo con SQLX y JavaScript. Si bien es opcional, usar JavaScript junto con SQLX para crear elementos similares de forma repetida en tu flujo de trabajo Por ejemplo, con JavaScript, puedes crear una vista de cada tabla de tu flujo de trabajo con ciertos IDs de usuario quitados. También puedes desarrollar acciones de flujo de trabajo exclusivamente con JavaScript.
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.
Además, debes conocer la sintaxis de JavaScript y los siguientes conceptos de JavaScript:
- Variables
- Arrays
- Instrucciones condicionales
- Bucles for
- Maps
- Funciones
- Objetos
- Cómo importar y exportar módulos
Roles obligatorios
Para obtener los permisos que necesitas para desarrollar un flujo de trabajo con JavaScript y reutilizar código con JavaScript includes,
pídele a tu administrador que te otorgue el rol de IAM de
Editor de Dataform (roles/dataform.editor) 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.
Agrega código JavaScript a un archivo SQLX
Puedes agregar código JavaScript a un archivo SQLX de dos maneras: de forma intercalada o dentro de un bloque JavaScript.
Puedes usar un bloque de JavaScript para definir funciones o constantes en un archivo SQLX. Puedes usar JavaScript intercalado para modificar de forma dinámica una consulta en SQLX o en SQL.
En el siguiente muestra de código, se muestra la función self integrada de JavaScript de Dataform Core agregada de forma intercalada al bloque post_operations en un archivo SQLX:
config {type: "table"}
SELECT * FROM ...
post_operations {
GRANT `roles/bigquery.dataViewer`
ON
TABLE ${self()}
TO "group:allusers@example.com", "user:otheruser@example.com"
}
En la siguiente muestra de código, se muestra una constante definida en un bloque de JavaScript y se usa de forma intercalada dentro de una consulta en un archivo SQLX:
js {
const columnName = "foo";
}
SELECT 1 AS ${columnName} FROM "..."
Cómo reutilizar código en un solo archivo SQLX con encapsulación de JavaScript
Puedes reutilizar el código de JavaScript para optimizar el desarrollo en Dataform. Para reutilizar constantes y funciones de JavaScript en un solo archivo SQLX, puedes encapsularlas en un bloque de JavaScript. Para reutilizar código de JavaScript en un solo repositorio de Dataform, puedes crear archivos de inclusión. Para reutilizar código de JavaScript en varios repositorios de Dataform, puedes crear o importar un paquete.
Para crear partes repetitivas de código SQL que puedas reutilizar en un solo archivo SQLX, puedes encapsular funciones y constantes en un bloque de JavaScript. Solo puedes reutilizar el código definido en un bloque de JavaScript dentro del archivo SQLX en el que se define el bloque. Para obtener más información, consulta Dataform Core.
En la siguiente muestra de código, se muestran una constante y una función definidas en un bloque de JavaScript y que se usan de forma intercalada dentro de una consulta en un archivo SQLX:
js {
const foo = 1;
function bar(number){
return number+1;
}
}
select
${foo} as one,
${bar(foo)} as two
Cómo reutilizar código en un solo repositorio con la función de inclusión
Las inclusiones son constantes o funciones de JavaScript globales para tu repositorio.
Defines las inclusiones en el directorio includes de tu repositorio. Luego, puedes reutilizarlos en todo tu repositorio en archivos JavaScript y SQLX.
En el siguiente muestra de código, se muestra la definición de la constante launch_date en el archivo includes/constants.js:
// filename is includes/constants.js
const launch_date = "11.11.2011";
module.exports = { launch_date };
En la siguiente muestra de código, se muestra la constante launch_date a la que se hace referencia en una consulta de definición de tabla en un archivo SQLX:
config {type: "table"}