Introducción a JavaScript en Dataform

Este documento te ayuda a comprender cómo puedes usar JavaScript para desarrollar flujos de trabajo de SQL en Dataform.

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?