Establece la configuración del flujo de trabajo de Dataform

En esta página, se muestra cómo editar el procesamiento del flujo de trabajo de SQL de Dataform. de configuración para un repositorio específico.

Es posible que quieras editar el archivo de configuración para cambiar el nombre de los esquemas o agregar variables de compilación a tu repositorio.

Acerca de la configuración del repositorio

Cada repositorio de Dataform contiene un flujo de trabajo único de configuración de Terraform. El archivo contiene el ID del proyecto de Google Cloud y el esquema en qué Dataform publica recursos en BigQuery. Dataform usa la configuración predeterminada que puedes anular para que se adapte mejor a tus y las necesidades del cliente editando el archivo de configuración.

A partir de Dataform Core 3.0.0, la configuración del flujo de trabajo se almacenan en el archivo workflow_settings.yaml de forma predeterminada. En versiones anteriores del núcleo de Dataform, la configuración del flujo de trabajo se almacena en el archivo dataform.json. El archivo workflow_settings.yaml de Dataform Core 3.0 tiene las siguientes características: retrocompatible con dataform.json. Puedes seguir usando dataform.json para almacenar la configuración del flujo de trabajo. Como práctica recomendada, deberías migrar la configuración del flujo de trabajo del repositorio al formato workflow_settings.yaml para la compatibilidad futura.

Acerca de workflow_settings.yaml

El archivo workflow_settings.yaml, que se introdujo en Dataform Core 3.0, almacena la configuración del flujo de trabajo de Dataform en formato YAML.

En la siguiente muestra de código, puedes ver un archivo workflow_settings.yaml de muestra:

  defaultProject: my-gcp-project-id
  defaultDataset: dataform
  defaultLocation: australia-southeast2
  defaultAssertionDataset: dataform_assertions

En la muestra de código anterior, los pares clave-valor se describen de la siguiente manera:

  • defaultProject: Es el ID del proyecto de Google Cloud de BigQuery.
  • defaultDataset: Es el conjunto de datos de BigQuery en el que Dataform crea recursos, llamados dataform de forma predeterminada.
  • defaultLocation: Es la región predeterminada del conjunto de datos de BigQuery. Para obtener más información sobre las ubicaciones de los conjuntos de datos de BigQuery, consulta Ubicaciones de los conjuntos de datos En esta ubicación, Dataform procesa tu código y almacena datos ejecutados. Esta región de procesamiento debe coincidir con la ubicación de tus conjuntos de datos de BigQuery, pero no es necesario la región del repositorio de Dataform.
  • defaultAssertionDataset: Es el conjunto de datos de BigQuery en el que Dataform crea vistas con resultados de aserción, llamadas dataform_assertions de forma predeterminada.

Para obtener más información sobre las propiedades de workflow_settings.yaml, consulta Referencia de configs para la configuración del flujo de trabajo en GitHub.

Puedes acceder a las propiedades definidas en workflow_settings.yaml en tu El código de Dataform como propiedades del dataform.projectConfig .

Las siguientes asignaciones de las opciones de workflow_settings.yaml al código es accesible Se aplican dataform.projectConfig opciones:

  • defaultProject => defaultDatabase
  • defaultDataset => defaultSchema
  • defaultAssertionDataset => assertionSchema
  • projectSuffix => databaseSuffix
  • datasetSuffix => schemaSuffix
  • namePrefix => tablePrefix

En la siguiente muestra de código, se observa el objeto dataform.projectConfig al que se llama en un Instrucción SELECT en una vista:

  config { type: "view" }
  SELECT ${when(
    !dataform.projectConfig.tablePrefix,
    "table prefix is set!",
    "table prefix is not set!"
  )}

Acerca de dataform.json

El archivo dataform.json almacena la configuración del flujo de trabajo de Dataform en el formato JSON.

En la siguiente muestra de código, puedes ver un archivo dataform.json de muestra:

  {
    "warehouse": "bigquery",
    "defaultDatabase": "my-gcp-project-id",
    "defaultSchema": "dataform",
    "defaultLocation": "australia-southeast2",
    "assertionSchema": "dataform_assertions"
  }

En la muestra de código anterior, los pares clave-valor se describen de la siguiente manera:

  • warehouse: puntero a BigQuery, donde Dataform crea recursos.
  • defaultDatabase: Es el ID del proyecto de Google Cloud de BigQuery.
  • defaultSchema: Es el conjunto de datos de BigQuery en el que Dataform crea recursos.
  • defaultLocation: Es la región predeterminada del conjunto de datos de BigQuery. Para obtener más información sobre las ubicaciones de los conjuntos de datos de BigQuery, consulta Ubicaciones de los conjuntos de datos. En esta ubicación, Dataform procesa tu código y almacena datos ejecutados. Esta región de procesamiento debe coincidir con la ubicación de tus conjuntos de datos de BigQuery, pero no es necesario la región del repositorio de Dataform.
  • assertionSchema: Es el conjunto de datos de BigQuery en el que Dataform crea vistas con resultados de aserción, llamadas dataform_assertions de forma predeterminada.

Puedes acceder a las propiedades definidas en dataform.json en el código de tu proyecto como Propiedades de dataform.projectConfig .

Antes de comenzar

  1. Crea un repositorio.

  2. Crea e inicializa un lugar de trabajo de desarrollo en tu repositorio.

Roles obligatorios

Si quieres obtener los permisos que necesitas para configurar Dataform, haz lo siguiente: solicita a tu administrador que te otorgue el Es el rol de IAM de Administrador de Dataform (roles/dataform.admin) en los repositorios. 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.

Configura nombres de esquemas

Para configurar los nombres de esquemas, debes editar defaultDataset y defaultAssertionSchema propiedades en el archivo workflow_settings.yaml o el defaultSchema y las propiedades assertionSchema en el archivo dataform.json.

Para configurar el nombre de un esquema, sigue estos pasos:

workflow_settings.yaml

  1. En tu lugar de trabajo de desarrollo, en el panel Files, haz clic en el archivo workflow_settings.yaml.

  2. Edita el valor de defaultDataset, defaultAssertionSchema o ambos.

En la siguiente muestra de código, aparece un nombre defaultDataset personalizado definido en el archivo workflow_settings.yaml:

  ...
  defaultDataset: mytables
  ...

dataform.json

  1. En tu lugar de trabajo de desarrollo, en el panel Files, haz clic en el archivo dataform.json.

  2. Edita el valor de defaultSchema, assertionSchema o ambos.

En la siguiente muestra de código, aparece un nombre defaultSchema personalizado definido en el Archivo dataform.json:

{
  ...
  "defaultSchema": "mytables",
  ...
}

Crea variables de compilación personalizadas

Las variables de compilación contienen valores que puedes modificar con la compilación anulaciones en una configuración de lanzamiento o en una solicitud a la API de Dataform.

Después de definir una variable de compilación en workflow_settings.yaml y agregarla a de las tablas seleccionadas, puedes modificar su valor en una configuración de lanzamiento Anulaciones de compilación de la API de Dataform ejecutar tablas de forma condicional.

Si deseas obtener más información sobre la ejecución de tablas de forma condicional usando variables de compilación, consulta Introducción al ciclo de vida del código en Dataform.

Para crear una variable de compilación que puedas usar en un repositorio, haz lo siguiente: sigue estos pasos:

workflow_settings.yaml

  1. Ve a tu lugar de trabajo de desarrollo de Dataform.
  2. En el panel Files, selecciona el archivo workflow_settings.yaml.
  3. Ingresa el siguiente fragmento de código:

    "vars": {
      "YOUR_VARIABLE":"VALUE"
    }
    

    Reemplaza lo siguiente:

    • YOUR_VARIABLE por un nombre para la variable
    • VALUE por el valor predeterminado de la variable de compilación

En la siguiente muestra de código, se observa el conjunto de variables de compilación myVariableName a myVariableValue en el archivo workflow_settings.yaml:

...
vars:
  myVariableName: myVariableValue
...

En la siguiente muestra de código, se observa el archivo workflow_settings.yaml con el elemento La variable de compilación executionSetting se estableció en dev:

defaultProject: default_bigquery_database
defaultLocation: us-west1
defaultDataset: dataform_data,
vars:
executionSetting: dev

dataform.json

  1. Ve a tu lugar de trabajo de desarrollo de Dataform.
  2. En el panel Files, selecciona el archivo dataform.json.
  3. Ingresa el siguiente fragmento de código:

    "vars": {
      "YOUR_VARIABLE":"VALUE"
    }
    

    Reemplaza lo siguiente:

    • YOUR_VARIABLE por un nombre para la variable
    • VALUE por el valor predeterminado de la variable de compilación

En la siguiente muestra de código, se observa el conjunto de variables de compilación myVariableName a myVariableValue en el archivo dataform.json:

{
  ...
  "vars": {
    "myVariableName": "myVariableValue"
  },
  ...
}

En la siguiente muestra de código, se observa el archivo dataform.json con el elemento La variable de compilación executionSetting se estableció en dev:

{
"warehouse": "bigquery",
"defaultSchema": "dataform_data",
"defaultDatabase": "default_bigquery_database".
"defaultLocation":"us-west-1",
"vars": {
"executionSetting":"dev"
}
}

Cómo agregar una variable de compilación a una tabla

Para agregar una variable de compilación a un archivo de definición de tablas de SQLX, sigue estos pasos:

  1. Ve a tu lugar de trabajo de desarrollo de Dataform.
  2. En el panel Files, selecciona un archivo de definición de tablas de SQLX.
  3. En el archivo, ingresa una cláusula when en el siguiente formato:

    ${when(dataform.projectConfig.vars.YOUR_VARIABLE === "SET_VALUE", "CONDITION")}
    

    Reemplaza lo siguiente:

    • YOUR_VARIABLE por el nombre de la variable por ejemplo executionSetting.
    • SET_VALUE por un valor para la variable por ejemplo, staging.
    • CONDITION por una condición para la ejecución de la tabla

En la siguiente muestra de código, aparece un archivo SQLX de definición de tablas con un when. y la variable executionSetting que ejecuta el 10% de los datos en la configuración de la ejecución de la etapa de pruebas:

  select
    *
  from ${ref("data")}
  ${when(
    dataform.projectConfig.vars.executionSetting === "staging",
    "where mod(farm_fingerprint(id) / 10) = 0",
  )}

En la siguiente muestra de código, se observa un archivo SQLX de definición de vistas con un when. y la variable myVariableName:

  config { type: "view" }
  SELECT ${when(
    dataform.projectConfig.vars.myVariableName === "myVariableValue",
    "myVariableName is set to myVariableValue!",
    "myVariableName is not set to myVariableValue!"
  )}

Migra la configuración del flujo de trabajo a workflow_settings.yaml

Para asegurarte de que tu archivo de configuración de flujo de trabajo sea compatible con del framework principal de Dataform, debes migrar tu flujo de trabajo del archivo dataform.json al archivo workflow_settings.yaml.

El archivo workflow_settings.yaml reemplaza al archivo dataform.json.

Si el núcleo de Dataform es el único paquete de dependencia en tu repositorio, Luego, el archivo workflow_settings.yaml también reemplaza al archivo package.json. Obtén más información para reemplazar package.json por workflow_settings.yaml, consulta Administra el paquete principal de Dataform.

En la siguiente tabla, se muestra la asignación de las propiedades de configuración del flujo de trabajo de De dataform.json a workflow_settings.yaml:

Propiedad en dataform.json Propiedad en workflow_settings.yaml Descripción
assertionSchema defaultAssertionDataset Obligatorio. El conjunto de datos predeterminado para las aserciones.
defaultDatabase defaultProject Obligatorio. El nombre predeterminado del proyecto de Google Cloud.
defaultLocation defaultLocation Obligatorio. La ubicación predeterminada de BigQuery en la que Dataform creará tablas. Para obtener más información sobre las ubicaciones de BigQuery, consulta Ubicaciones de conjuntos de datos.
defaultSchema defaultDataset Obligatorio. Es el conjunto de datos predeterminado.
databaseSuffix projectSuffix Opcional. El sufijo que se agregará a todas las referencias de proyectos de Google Cloud.
schemaSuffix datasetSuffix Opcional. El sufijo para adjuntar a todos los conjuntos de datos de acciones.
tablePrefix namePrefix Opcional. Es el prefijo que se antepondrá a todos los nombres de acción.
vars vars Opcional. Variables definidas por el usuario que están disponibles para proyectar el código durante la compilación. Un objeto que contiene una lista de pares key: value.
warehouse - Obligatorio en dataform.json. Debe establecerse en bigquery. No está disponible en workflow_settings.yaml.
- dataformCoreVersion No está disponible en dataform.json. Se establece en workflow_settings.yaml de forma predeterminada para los repositorios nuevos. Para obtener más información, consulta Cómo administrar el paquete principal de Dataform.

Para migrar la configuración del flujo de trabajo a workflow_settings.yaml, sigue estos pasos:

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

    Ir a la página de Dataform

  2. Selecciona un repositorio y, luego, un lugar de trabajo.

  3. En el panel Archivos, haz clic en addAdd, Luego, haz clic en Crear archivo.

  4. En el campo Add a file path, ingresa workflow_settings.yaml.

  5. Haz clic en Crear archivo.

  6. En el archivo workflow_settings.yaml, agrega la configuración de tu archivo dataform.json, asignado al formato YAML.

  7. En el panel Archivos, haz clic en el menú Más junto a dataform.json. y, luego, haz clic en Borrar.

  8. Para confirmar la eliminación de dataform.json, haz clic en Borrar.

El siguiente muestra de código muestra la configuración del flujo de trabajo definida en Un archivo dataform.json:

{
  "warehouse": "bigquery",
  "defaultDatabase": "dataform-demos",
  "defaultLocation": "US",
  "defaultSchema": "dataform",
  "assertionSchema": "dataform_assertions"
  "vars": {
    "environmentName": "development"
  }
}

En la siguiente muestra de código, se muestra el archivo dataform.json anterior convertido en workflow_settings.yaml:

defaultProject: dataform-demos
defaultLocation: US
defaultDataset: dataform
defaultAssertionDataset: dataform_assertions
vars:
    environmentName: "development"

¿Qué sigue?