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.

Núcleo de Dataform te permite crear objetos de flujo de trabajo de SQL con SQLX y JavaScript. Aunque es opcional, se usa JavaScript junto con SQLX para crear elementos similares repetidamente en tu flujo de trabajo. Por ejemplo, con JavaScript puedes crear un de cada tabla de 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 estar familiarizado con 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: intercaladas 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 el núcleo de Dataform self integrado. Se agregó la función de JavaScript 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"
}

El siguiente muestra de código muestra una constante definida en un bloque de JavaScript y se usa intercalado 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 único archivo SQLX, puedes encapsularlas en un bloque de JavaScript. Para reutilizar 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, sigue estos pasos: puedes crear o importar un paquete.

Volver a usar código en un solo archivo SQLX con encapsulamiento de JavaScript

Para crear partes repetitivas del código SQL que puedas volver a utilizar 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 donde se define el bloque. Para obtener más información, consulta Descripción general de Dataform Core.

El siguiente muestra de código muestra una constante y una función definidas en un Bloque de JavaScript que se usa intercalado en 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. Debes definir inclusiones en includes. de tu repositorio. Luego, puedes volver a usarlos en tu repositorio en archivos JavaScript y SQLX.

En la 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 observa la constante launch_date a la que se hace referencia en una tabla. definición 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 de varios repositorios de Dataform para optimizar el desarrollo de flujos de trabajo de SQL.

Puedes crear tu propio paquete personalizado en Dataform o usa uno de los paquetes de Dataform de código abierto. disponibles en la Página de GitHub de código abierto de Dataform.

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 hacer lo siguiente: instala el paquete en tu repositorio de Dataform y, luego, impórtalo el archivo individual JavaScript o SQLX en el que quieres 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, sigue estos pasos: 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 SQLX combinado con JavaScript, puedes crear objetos de flujo de trabajo de SQL en archivos .js usando solo JavaScript: Puedes crear varios objetos de flujo de trabajo de SQL en un solo JavaScript con métodos globales de Dataform y código arbitrario de JavaScript ES5. como bucles y constantes. Cada uno del Dataform JavaScript globales tienen propiedades que puedes usar para configurar los objetos creados.

Puedes crear los siguientes objetos de flujo de trabajo de SQL usando solo JavaScript en Dataform:

  • Declaraciones de fuentes de datos
  • 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?