Dataform Core te permite crear objetos de flujo de trabajo de SQL con SQLX y JavaScript. Aunque es opcional, puedes usar JavaScript junto con SQLX para crear elementos similares repetidamente en tu flujo de trabajo. Por ejemplo, con JavaScript puedes crear una vista de cada tabla en tu flujo de trabajo sin ciertos IDs de usuario. También puedes desarrollar objetos de flujo de trabajo de SQL exclusivamente con JavaScript.
Para comenzar a desarrollar flujos de trabajo de SQL de Dataform con JavaScript, debes conocer la sintaxis de JavaScript y los siguientes conceptos de JavaScript:
- Variables
- Arrays
- Instrucciones condicionales
- Bucles
- Maps
- Funciones
- Objetos
- Importar y exportar módulos
Agrega código JavaScript a un archivo SQLX
Puedes agregar código JavaScript a un archivo SQLX de dos maneras: intercalado o dentro de un bloque de JavaScript.
Puedes usar un bloque de JavaScript para definir funciones o constantes en un archivo SQLX. Puedes usar JavaScript intercalado para modificar dinámicamente una consulta de SQLX o SQL.
En la siguiente muestra de código, se observa la función self
de JavaScript integrada principal de Dataform 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 observa una constante definida en un bloque de JavaScript y que se usa intercalada dentro de una consulta en un archivo SQLX:
js {
const columnName = "foo";
}
SELECT 1 AS ${columnName} FROM "..."
Vuelve a usar código con JavaScript
Puedes volver a usar el código JavaScript para optimizar el desarrollo en Dataform. Para reutilizar las constantes y funciones de JavaScript en un solo archivo SQLX, puedes encapsularlas en un bloque de JavaScript. Para volver a usar el código JavaScript en un solo repositorio de Dataform, puedes crear inclusiones. Para volver a usar el código JavaScript en varios repositorios de Dataform, puedes crear o importar un paquete.
Volver a usar código en un solo archivo SQLX con encapsulamiento de JavaScript
Para crear partes repetitivas de código SQL que puedas volver a usar en un solo archivo SQLX, puedes encapsular funciones y constantes en un bloque de JavaScript. Puedes volver a usar el código definido en un bloque de JavaScript solo dentro del archivo SQLX donde está definido el bloque. Para obtener más información, consulta Descripción general del núcleo de Dataform.
En la siguiente muestra de código, se observa una constante y una función definidas en un bloque de JavaScript y que se usa intercalado 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
Vuelve a usar código en un solo repositorio con inclusiones
Las inclusiones son constantes de JavaScript o funciones globales para tu repositorio.
Defines inclusiones en el directorio includes
de tu repositorio. Puedes reutilizarlos en tu repositorio,
en archivos JavaScript y SQLX.
En la siguiente muestra de código, se observa 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 observa la constante launch_date
a la que se hace referencia en una consulta de definición de tablas en un archivo SQLX:
config {type: "table"}
SELECT * FROM source_table WHERE date > ${constants.launch_date}
Vuelve a usar código en varios repositorios con paquetes
Los paquetes son colecciones de código JavaScript que puedes importar y usar en varios repositorios de Dataform para optimizar el desarrollo de flujos de trabajo de SQL.
Puedes crear tu propio paquete personalizado en Dataform o usar uno de los paquetes de Dataform de código abierto, disponibles en la página de Dataform de código abierto de GitHub.
Para ver un ejemplo de cómo usar un paquete de código abierto en Dataform, consulta Usa dimensiones que cambian lentamente en Dataform.
Para poder usar el contenido de un paquete en Dataform, debes instalarlo en tu repositorio de Dataform y, luego, importarlo al archivo individual de JavaScript o SQLX en el que deseas usar el paquete. Para obtener más información, consulta Instala un paquete en Dataform.
Para poder instalar un paquete de NPM privado en un repositorio de Dataform, debes autenticar el paquete.
Crear flujos de trabajo de SQL en JavaScript
Como alternativa al desarrollo de flujos de trabajo de SQL en SQLX, o en SQLX en combinación con JavaScript, puedes crear objetos de flujo de trabajo de SQL en archivos .js
mediante JavaScript. Puedes crear varios objetos de flujo de trabajo de SQL dentro de un archivo de JavaScript con métodos globales de Dataform y código arbitrario de JavaScript ES5, como bucles y constantes. Cada uno de los métodos globales de JavaScript de Dataform contiene propiedades que puedes usar para configurar los objetos creados.
Puedes crear los siguientes objetos de flujo de trabajo de SQL si usas solo JavaScript en Dataform:
- Declaraciones de fuentes de datos
- Aserciones manuales
- Tablas
- Aserciones manuales
- Operaciones de SQL personalizadas
Para obtener más información sobre cómo crear objetos de flujo de trabajo de SQL solo con JavaScript, consulta Crea flujos de trabajo de SQL de Dataform con JavaScript.
¿Qué sigue?
- Para aprender a reutilizar variables y funciones con inclusiones, consulta Reutiliza variables y funciones con inclusiones en Dataform.
- Si quieres aprender a crear un paquete, consulta Cómo crear un paquete en Dataform.
- Si quieres aprender a instalar un paquete, consulta Cómo instalar un paquete en Dataform.
- Para obtener información sobre cómo autenticar un paquete privado, consulta Autentica un paquete privado.
- Para aprender a usar un paquete de código abierto en Dataform, consulta Usa dimensiones que cambian lentamente en Dataform.
- Si quieres aprender a crear flujos de trabajo de SQL con JavaScript, consulta Crea flujos de trabajo de SQL de Dataform con JavaScript.