Descripción general del núcleo de Dataform
Dataform Core es un metalenguaje de código abierto para crear tablas y flujos de trabajo de SQL. Dataform Core amplía SQL proporcionando un sistema de administración de dependencias, pruebas automatizadas de calidad de los datos y documentación sobre los datos.
Puedes usar Dataform Core para los siguientes fines:
- Definición de tablas, vistas, vistas materializadas o tablas incrementales
- Definición de la lógica de transformación de los datos
- Declarar los datos de origen y administrar las dependencias de las tablas
- Documentar las descripciones de tablas y columnas dentro del código
- Volver a usar funciones y variables en diferentes consultas
- Escribir aserciones de datos para garantizar la coherencia de los datos
En Dataform, usas el núcleo de Dataform para desarrollar flujos de trabajo de SQL y, también, implementar recursos en BigQuery.
El núcleo de Dataform es parte del framework de código abierto de modelado de datos de Dataform que también incluye la CLI de Dataform. Puedes compilar y ejecutar el núcleo de Dataform de forma local a través de la CLI de Dataform fuera de Google Cloud.
Para usar Dataform Core, debes escribir archivos SQLX. Cada archivo SQLX contiene una consulta que define una relación de base de datos que Dataform crea y actualiza dentro de BigQuery.
Dataform compila tu código principal de Dataform en tiempo real para crear un resultado de compilación de SQL que puedes ejecutar en BigQuery.
La compilación de Dataform es hermética para garantizar la coherencia de la compilación, lo que significa que siempre se compila el mismo código en el mismo resultado de compilación de SQL. Dataform compila tu código en un entorno de zona de pruebas sin acceso a Internet. No hay acciones adicionales disponibles durante la compilación, como llamar a APIs externas.
Bloque de configuración de archivos SQLX
Un archivo SQLX consta de un bloque de configuración y un cuerpo. Todas las propiedades de configuración (y el bloque de configuración en sí) son opcionales. Por ello, cualquier archivo SQL sin formato es un archivo SQLX válido que Dataform ejecuta sin modificaciones.
En el bloque de configuración, puedes realizar las siguientes acciones:
- Especifica los metadatos de la consulta.
- Datos de documentos
- Definir las pruebas de calidad de los datos
Especifica los metadatos de la consulta
Puedes configurar la forma en que Dataform materializa consultas en BigQuery, por ejemplo, el tipo de tabla de salida, la base de datos de destino o las etiquetas con los metadatos de configuración.
Datos de documentos
Puedes documentar las tablas y sus campos directamente en el bloque de configuración. La documentación de tus tablas se envía directamente a BigQuery. Puedes analizar esta documentación y enviarla a otras herramientas.
Cómo definir pruebas de calidad de los datos
Puedes definir pruebas de calidad de los datos, llamadas aserciones, para verificar la unicidad, los valores nulos o una condición personalizada. Dataform agrega aserciones definidas en el bloque de configuración al árbol de dependencias de tu flujo de trabajo después de la creación de la tabla. También puedes definir aserciones fuera del bloque de configuración, en un archivo SQLX independiente.
En la siguiente muestra de código, se indica cómo definir el tipo de tabla de salida, documentar la tabla y definir una prueba de calidad en un bloque de configuración de un archivo SQLX.
config {
type: "table",
description: "This table joins orders information from OnlineStore & payment information from PaymentApp",
columns: {
order_date: "The date when a customer placed their order",
id: "Order ID as defined by OnlineStore",
order_status: "The status of an order e.g. sent, delivered",
customer_id: "Unique customer ID",
payment_status: "The status of a payment e.g. pending, paid",
payment_method: "How the customer chose to pay",
item_count: "The number of items the customer ordered",
amount: "The amount the customer paid"
},
assertions: {
uniqueKey: ["id"]
}
}
Cuerpo del archivo SQLX
En el cuerpo de un archivo SQLX, puedes realizar las siguientes acciones:
- Define una tabla y sus dependencias.
- Definir operaciones de SQL adicionales para ejecutar en BigQuery
- Generar código SQL con JavaScript
Cómo definir una tabla
Para definir una tabla nueva, puedes usar instrucciones SELECT
de SQL y la función ref
.
La función ref
es una función integrada de SQLX que es fundamental para la administración
de dependencias en Dataform. La función ref
te permite hacer referencia a tablas definidas en tu proyecto de Dataform en lugar de codificar el esquema y los nombres de tu tabla de datos.
Dataform usa la función ref
para compilar un árbol de dependencias de todas las
tablas que se crearán o actualizarán. Después de la compilación, Dataform agrega
instrucciones estándar, como CREATE
, REPLACE
o INSERT
.
En la siguiente muestra de código, se indica cómo hacer referencia a una tabla en un archivo SQLX con la función ref
.
config { type: "table" }
SELECT
order_date AS date,
order_id AS order_id,
order_status AS order_status,
SUM(item_count) AS item_count,
SUM(amount) AS revenue
FROM ${ref("store_clean")}
GROUP BY 1, 2, 3
El resultado es similar al siguiente:
CREATE OR REPLACE TABLE Dataform.orders AS
SELECT
order_date AS date,
order_id AS order_id,
order_status AS order_status,
SUM(item_count) AS item_count,
SUM(amount) AS revenue
FROM Dataform_stg.store_clean
GROUP BY 1, 2, 3
Para obtener más información sobre la administración de dependencias adicional, por ejemplo, cómo ejecutar código de manera condicional o usar otras funciones integradas del núcleo de Dataform, consulta la referencia del núcleo de Dataform.
Define operaciones de SQL adicionales
Si deseas configurar Dataform para que ejecute una o más instrucciones de SQL antes o después de crear una tabla o vista, puedes especificar operaciones previas y posteriores a la consulta.
En la siguiente muestra de código, se indica cómo configurar los permisos de acceso de visualización o tabla en una operación posterior a la consulta.
SELECT * FROM ...
post_operations {
GRANT `roles/bigquery.dataViewer` ON TABLE ${self()} TO "group:someusers@dataform.co"
}
Encapsula código SQL
Puedes usar bloques de JavaScript para definir funciones reutilizables que generen partes repetitivas de código SQL. Puedes volver a usar el código definido en un bloque de JavaScript solo dentro del archivo SLQX en el que está definido el bloque. Para volver a usar el código en todo el repositorio, puedes crear inclusiones.
Para modificar una consulta de forma dinámica, puedes usar JavaScript intercalado en cualquier parte del cuerpo.
En la siguiente muestra de código, se indica cómo definir un bloque de JavaScript en un archivo SQLX y usarlo de forma intercalada en una consulta:
js {
const columnName = "foo";
}
SELECT 1 AS ${columnName} FROM "..."
¿Qué sigue?
- Para obtener más información sobre las funciones principales integradas de Dataform, consulta la referencia de la base de datos de Dataform.
- Para obtener más información sobre la CLI de Dataform, consulta Usa la CLI de Dataform.
- Para aprender a definir operaciones de SQL adicionales, consulta Cómo agregar operaciones de SQL personalizadas.
- Para aprender a crear inclusiones de JavaScript, consulta Reutiliza variables y funciones con inclusiones.
- Para aprender a definir una tabla con Dataform, consulta Crea una tabla.