Crea flujos de trabajo de SQL de Dataform con JavaScript

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

  1. En la consola de Google Cloud, ve a la página Dataform.

    Ir a Dataform

  2. Selecciona o crea un repositorio.

  3. 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:

  1. En el panel Archivos, junto a definitions/, haz clic en el Menú Más

  2. Haz clic en Crear archivo.

  3. En el panel Crear archivo nuevo, haz lo siguiente:

    1. 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.

    2. 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:

  1. En el lugar de trabajo de desarrollo, en el panel Files, expande definitions/.

  2. Selecciona un archivo JavaScript.

  3. 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",
     });
    
  4. 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:

  1. En el lugar de trabajo de desarrollo, en el panel Files, expande definitions/.

  2. Selecciona un archivo JavaScript.

  3. En el archivo, ingresa un método global de Dataform para JavaScript.

  4. En el método, ingresa un argumento ctx contextual.

  5. Opcional: Si usas cadenas de plantilla de JavaScript, une los argumento contextual entre acentos graves ``.

  6. En el argumento contextual, ingresa la función de consulta con su parámetro como un objeto de contexto.

  7. 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:

  1. En el lugar de trabajo de desarrollo, en el panel Files, expande definiciones/.

  2. Selecciona un archivo JavaScript.

  3. 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 datos
    • BIGQUERY_SCHEMA: Es el conjunto de datos de BigQuery en el que se existe relación externa
    • RELATION_NAME: Es el nombre de la relación que puedes usar más adelante. hacer referencia a la fuente de datos en Dataform
  4. Para declarar otra fuente de datos en el mismo archivo, agrega un declare adicional. bloque al archivo.

  5. 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:

  1. En el lugar de trabajo de desarrollo, en el panel Files, expande definitions/.

  2. Selecciona un archivo JavaScript.

  3. En el archivo, ingresa el siguiente fragmento de código:

     publish("TABLE_NAME").query(ctx => "SELECT_QUERY");
    
    1. Reemplaza TABLE_NAME por el nombre de la tabla.

    2. Reemplaza SELECT_QUERY por una sentencia SELECT de SQL definir la tabla.

  4. 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.

  5. Para definir otra tabla en el mismo archivo, repite los pasos 3 y 4.

  6. 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:

  1. En el lugar de trabajo de desarrollo, en el panel Files, expande definitions/.

  2. Selecciona un archivo JavaScript.

  3. En el archivo, ingresa el siguiente fragmento de código:

     assert("ASSERTION_NAME").query(ctx => "CUSTOM_ASSERTION_QUERY");
    
    1. Reemplaza ASSERTION_NAME por el nombre de tu elemento personalizado. .

    2. Reemplaza CUSTOM_ASSERTION_QUERY por tu SQL. una aserción de cliente.

  4. Para crear otra aserción en el mismo archivo, repite el paso 3.

  5. 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:

  1. En el lugar de trabajo de desarrollo, en el panel Files, expande definitions/.

  2. Selecciona un archivo JavaScript.

  3. En el archivo, ingresa el siguiente fragmento de código:

     operate("OPERATION_NAME").queries(ctx => "CUSTOM_SQL_QUERY");
    
    1. Reemplaza OPERATION_NAME por el nombre del elemento personalizado. una sola operación.

    2. Reemplaza CUSTOM_SQL_QUERY por tu consulta en SQL personalizada.

  4. Para definir otra operación SQL personalizada en el mismo archivo, repite el paso 3.

  5. 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?