Descripción general de la calidad de los datos automáticos

En este documento, se describe la calidad automática de los datos de Dataplex, que te permite definir y medir la calidad de tus datos. Puedes automatizar el análisis de datos, validarlos con reglas definidas y registrar alertas si tus datos no cumplen con los requisitos de calidad. Puedes administrar las implementaciones y las reglas de calidad de los datos como código, lo que mejora la integridad de las canalizaciones de producción de datos.

Para comenzar, usa las recomendaciones de reglas de generación de perfiles de datos de Dataplex o compila reglas personalizadas en la consola de Google Cloud. Dataplex proporciona supervisión, solución de problemas y alertas de Cloud Logging que se integran en la calidad de datos automática de Dataplex.

Modelo conceptual

Un análisis de calidad de los datos aplica reglas de calidad a los datos de la tabla para informar los resultados.

Un análisis de datos es un trabajo de Dataplex que muestra datos de BigQuery y Cloud Storage y, luego, infiere varios tipos de metadatos. Para medir la calidad de una tabla mediante la calidad automática de los datos, debes crear un objeto DataScan de tipo data quality. El análisis se ejecuta en una sola tabla de BigQuery. El análisis utiliza recursos en un proyecto de usuario de Google, por lo que no necesitas configurar tu propia infraestructura.

La creación y el uso de un análisis de calidad de los datos consta de los siguientes pasos:

  1. Definición de la regla
  2. Ejecución de reglas
  3. Supervisión y alertas
  4. Soluciona problemas

Definición de la regla

Las reglas de calidad de los datos asociadas con un análisis de calidad de los datos definen las expectativas relacionadas con los datos. Puedes crear reglas de calidad de los datos de las siguientes maneras:

Reglas predefinidas

Dataplex admite dos categorías de reglas predefinidas: a nivel de fila o agregadas.

Nivel de fila

En el caso de las reglas de categoría a nivel de fila, la expectativa se aplica a cada fila de datos. Cada fila pasa o reprueba la condición de forma independiente. Por ejemplo, column_A_value < 1.

Las verificaciones a nivel de fila requieren que especifiques un umbral para aprobar. Cuando el porcentaje de filas que pasan la regla es inferior al valor del umbral, la regla falla.

Agregación

En el caso de las reglas agregadas, la expectativa se aplica a un solo valor agregado en todos los datos. Por ejemplo, Avg(someCol) >= 10. Para pasar, la verificación debe evaluarse como el booleano true. Las reglas de agregación no proporcionan un recuento independiente de aprobación o error en cada fila.

Para ambas categorías de reglas, puedes establecer los siguientes parámetros:

  • La columna a la que se aplica la regla.
  • Una dimensión de un conjunto de dimensiones predefinidas.

En la siguiente tabla, se enumeran los tipos de reglas de agregación y a nivel de fila admitidos:

Tipo de regla
(nombre en la consola de Google Cloud)
Nivel de fila o regla de agregación Descripción Tipos de columnas admitidos Parámetros específicos de la regla
RangeExpectation
(Comprobación de rango)
Nivel de fila Verifica si el valor está entre mín. y máx. Todas las columnas de tipo numérico, de fecha y de marca de tiempo. Obligatorio:
  • Porcentaje del umbral de aprobación
  • Valores mean, min o max: Especifica al menos un valor.
Opcional:
  • Habilita strict min: Si está habilitada, la verificación de reglas usa ">" en lugar de ">=".
  • Habilitar strict max: Si está habilitada, la verificación de reglas usa “<” en lugar de “<=”.
  • Habilitar ignore null: Si se habilita esta opción, los valores nulos se ignoran en la verificación de reglas.
NonNullExpectation
(Verificación nula)
Nivel de fila Valida que los valores de la columna no sean NULO. Todos los tipos de columnas admitidos. Obligatorio:
  • Porcentaje del umbral de aprobación.
SetExpectation
(Establecer verificación)
Nivel de fila Comprueba si los valores de una columna son uno de los valores especificados en un conjunto. Todos los tipos de columnas admitidos, excepto Record y Struct. Obligatorio:
  • Conjunto de valores de cadena para comprobar.
  • Porcentaje del umbral de aprobación.
Opcional:
  • Habilitar ignore null: Si se habilita esta opción, los valores nulos se ignoran en la verificación de reglas.
RegexExpectation
(Comprobación de expresiones regulares)
Nivel de fila Verifica los valores con una expresión regular especificada. String Obligatorio:
  • Patrón de expresión regular que se usa para la verificación.
  • Porcentaje del umbral de aprobación.
  • Nota: SQL estándar de Google proporciona compatibilidad con expresiones regulares a través de la biblioteca re2; consulta esa documentación para obtener su sintaxis de expresión regular.
Opcional:
  • Habilitar ignore null: Si se habilita esta opción, los valores nulos se ignoran en la verificación de reglas.
Uniqueness
(Verificación de unicidad)
Agregación Verifica si todos los valores de una columna son únicos. Todos los tipos de columnas admitidos, excepto Record y Struct. Obligatorio:
  • Columna y dimensión de los parámetros admitidos.
Opcional:
  • Habilitar ignore null: Si se habilita esta opción, los valores nulos se ignoran en la verificación de reglas.
StatisticRangeExpectation
(Verificación estadística)
Agregación Comprueba si la medida estadística determinada coincide con el rango esperado. Todos los tipos de columnas numéricas compatibles. Obligatorio:
  • Valores mean, min o max: Especifica al menos un valor.
Opcional:
  • Habilita strict min: Si está habilitada, la verificación de reglas usa ">" en lugar de ">=".
  • Habilitar strict max: Si está habilitada, la verificación de reglas usa “<” en lugar de “<=”.

Tipos de reglas de SQL personalizadas compatibles

Las reglas de SQL proporcionan flexibilidad para expandir la validación con una lógica personalizada. Estas reglas se presentan en los siguientes tipos.

Tipo de regla Nivel de fila o regla de agregación Descripción Tipos de columnas admitidos Parámetros específicos de la regla Ejemplo
Condición de la fila Nivel de fila

Especifica una expectativa para cada fila mediante la definición de una expresión de SQL en una cláusula WHERE. La expresión de SQL debe evaluarse como true (aprobada) o false (con errores) por fila. Dataplex calcula el porcentaje de filas que pasan esta expectativa y compara este valor con el porcentaje del umbral de aprobación para determinar el éxito o el fracaso de la regla.

La expresión puede incluir una referencia a otra tabla, por ejemplo, para crear verificaciones de integridad referencial.

Todas las columnas Obligatorio:
  • Condición de SQL que se usará
  • Porcentaje del umbral de aprobación
  • Dimensión
Opcional:
  • Columna con la que se asociará esta regla.
grossWeight <= netWeight
Expresión de SQL agregada Agregación

Estas reglas se ejecutan una vez por tabla. Proporciona una expresión de SQL que se evalúe como un valor booleano true (aprobado) o false (con errores).

La expresión de SQL puede incluir una referencia a otra tabla mediante las subconsultas de expresión.

Todas las columnas Obligatorio:
  • Condición de SQL que se usará
  • Dimensión
Opcional:
  • Columna con la que se asociará esta regla

Ejemplo de agregación simple:
avg(price) > 100

Uso de una subconsulta de expresión para comparar valores en una tabla diferente:
(SELECT COUNT(*) FROM `example_project.example_dataset.different-table`) < COUNT(*)

Aserción de SQL Agregación

Una regla de aserción usa una consulta de calidad de los datos para encontrar filas que fallan en una o más condiciones especificadas en la consulta. Proporciona una instrucción de SQL que se evalúe para mostrar filas que coincidan con el estado no válido. Si la consulta muestra alguna fila, la regla falla.

Omite el punto y coma final de la instrucción de SQL.

La instrucción de SQL puede incluir una referencia a otra tabla mediante las subconsultas de expresión.

Todas las columnas Obligatorio:
  • Instrucción de SQL para verificar un estado no válido
  • Dimensión
Opcional:
  • Columna con la que se asociará esta regla.

Ejemplo agregado simple para asegurarte de que discount_pct no sea mayor que 100:
SELECT * FROM example_project.example_dataset.table WHERE discount_pct > 100

Uso de una subconsulta de expresión para comparar valores en una tabla diferente:
SELECT * FROM `example_project.example_dataset.different-table` WHERE gross_weight > (SELECT avg(gross_weight) FROM `example_project.example_dataset.different-table`)

Para ver ejemplos de reglas, consulta Reglas de muestra de calidad de datos automática.

Para conocer las funciones de SQL compatibles, consulta la referencia de GoogleSQL.

Dimensiones

Las dimensiones te permiten agregar los resultados de varias reglas de calidad de los datos para la supervisión y las alertas. Debes asociar cada regla de calidad de datos con una dimensión. Dataplex admite las siguientes dimensiones:

  • Actualidad
  • Volumen
  • Integridad
  • Validez
  • Coherencia
  • Exactitud
  • Unicidad

Entrada escrita en reglas

Todos los parámetros de valor se pasan como valores de cadena a la API. Dataplex requiere que las entradas sigan el formato especificado de BigQuery.

Los parámetros de tipo binario se pueden pasar como una string codificada en base64.

Tipo Formatos admitidos Ejemplos
Objeto binario Valor codificado en base64 YXBwbGU=
Marca de tiempo AAAA-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.F]] [time_zone]
O AAAA-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.F]][time_zone_offset]
2014-09-27 12:30:00.45-08
Fecha AAAA-M[M]-D[D] 2014-09-27
Tiempo [H]H:[M]M:[S]S[.DDDDDD] 12:30:00,45
DateTime AAAA-[M]M-[D]D [[H]H:[M]M:[S]S[.DDDDDD]] 2014-09-27 12:30:00.45

Parámetro de referencia de datos

Cuando creas una regla de SQL personalizada, puedes hacer referencia a una tabla de fuente de datos y a todos sus filtros de condiciones previas si usas el parámetro de referencia de datos ${data()} en la regla, en lugar de mencionar de forma explícita la tabla de origen y sus filtros. Algunos ejemplos de filtros de condiciones previas incluyen los filtros de filas, los porcentajes de muestreo y los filtros incrementales. El parámetro ${data()} distingue mayúsculas de minúsculas.

Por ejemplo, supongamos que tienes una tabla de fuente de datos llamada my_project_id.dim_dataset.dim_currency. Deseas ejecutar un análisis incremental de la calidad de los datos que solo analice los datos diarios nuevos. En la tabla, se aplica un filtro de filas que filtra las entradas de hoy, transaction_timestamp >= current_date().

Una regla de SQL personalizada para encontrar filas con discount_pct para hoy se ve de la siguiente manera:

discount_pct IN (SELECT discount_pct FROM my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date())

Si usas el parámetro de referencia de datos, puedes simplificar la regla:

discount_pct IN (SELECT discount_pct FROM ${data()})

En este ejemplo, el parámetro ${data()} hace referencia a la tabla de fuente de datos con las entradas actuales, my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date(). En este ejemplo, el parámetro de referencia de datos se refiere solo a los datos incrementales.

Cuando usas un alias dentro de una subconsulta para hacer referencia a las columnas de la tabla de origen, puedes usar el parámetro de referencia de datos para hacer referencia a la tabla de origen, o bien omitir la referencia de tabla. No hagas referencia a las columnas de la tabla de origen mediante una referencia de tabla directa en la cláusula WHERE.

Recomendado:

  • Usa el parámetro de referencia de datos:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = ${data()}.timestamp
    )
    
  • Omite la referencia de la tabla:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = timestamp
    )
    

No se recomienda:

  • No uses una referencia de tabla directa:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = `my_project_id.dim_dataset.dim_currency`.timestamp
    )
    

Ejecución de reglas

Puedes programar análisis de calidad de los datos para que se ejecuten en un intervalo específico o ejecutar un análisis a pedido. Para administrar los análisis de calidad de los datos, puedes usar la API o la consola de Google Cloud.

Cuando ejecutas un análisis de calidad de los datos, Dataplex crea un trabajo. Como parte de la especificación de un análisis de calidad de los datos, puedes especificar que el alcance de un trabajo sea una de las siguientes opciones:

Tabla completa
Cada trabajo valida toda la tabla.
Incremental
Cada trabajo valida datos incrementales. Para determinar los incrementos, proporciona una columna Date / Timestamp en la tabla que se pueda usar como marcador. Por lo general, esta es la columna en la que se particiona la tabla.

Filtra datos

Dataplex puede filtrar los datos que se analizarán para determinar su calidad mediante un filtro de filas. Crear un filtro de fila te permite enfocarte en los datos dentro de un período o segmento específico, como una región determinada. El uso de filtros puede reducir el tiempo y el costo de ejecución, por ejemplo, filtrar datos con una marca de tiempo anterior a una fecha determinada.

Datos de muestra

Dataplex te permite especificar un porcentaje de registros de tus datos para muestrear para ejecutar un análisis de calidad de los datos. Crear análisis de calidad de los datos en una muestra más pequeña de datos puede reducir el tiempo de ejecución y el costo de consultar todo el conjunto de datos.

Supervisión y alertas

Puedes exportar los resultados del análisis a una tabla de BigQuery para analizarlos en detalle. Para personalizar los informes, puedes conectar los datos de la tabla de BigQuery a un panel Puedes crear un informe agregado con la misma tabla de resultados en varios análisis.

Puedes supervisar los trabajos de calidad de los datos con los registros data_scan y data_quality_scan_rule_result en el Explorador de registros.

Para cada trabajo de calidad de los datos, el registro data_scan con el campo data_scan_type configurado como DATA_QUALITY contiene la siguiente información:

  • Es la fuente de datos que se usa para el análisis de datos.
  • Detalles de la ejecución del trabajo, como la hora de creación, la hora de inicio, la hora de finalización y el estado del trabajo.
  • Resultado del trabajo de calidad de los datos: aprobado o reprobado.
  • Se aprobó o fracasó a nivel de dimensión.

Cada trabajo exitoso contiene un registro data_quality_scan_rule_result con la siguiente información detallada sobre cada regla de ese trabajo:

  • Información de configuración, como el nombre, el tipo de regla, el tipo de evaluación y la dimensión
  • Información del resultado, como aprobada o con errores, recuento total de filas, recuento de filas de aprobación, recuento de filas nulas y recuento de filas evaluadas.

La información de los registros está disponible a través de la API y la consola de Google Cloud. Puedes usar esta información para configurar alertas. Para obtener más información, consulta Configura alertas en Cloud Logging.

Solucionar fallas

Cuando una regla falla, Dataplex produce una consulta que muestra todas las columnas de la tabla (no solo la con errores).

Limitaciones

  • Los resultados del análisis de calidad de los datos no se publican en Data Catalog como etiquetas.
  • Las recomendaciones de reglas solo se admiten en la consola de Google Cloud.
  • La elección de las dimensiones se fija en una de las siete dimensiones predefinidas.
  • La cantidad de reglas por análisis de calidad de los datos se limita a 1,000.

Precios

  • Dataplex usa el SKU de procesamiento premium para cobrar por la calidad automática de los datos. Para obtener más información, consulta los precios de Dataplex.

  • Aún no está disponible la publicación automática de los resultados de la calidad de los datos en el catálogo. Cuando esté disponible, se cobrará con la misma tarifa que los precios de almacenamiento de metadatos de catálogo. Consulta Precios para obtener más detalles.

  • El procesamiento premium de Dataplex para la calidad automática de los datos se factura por segundo con un mínimo de un minuto.

  • No se aplican cargos por los análisis fallidos de calidad de los datos.

  • El cargo depende de la cantidad de filas y columnas, la cantidad de datos que analizaste, la configuración de las reglas de calidad de los datos, la configuración de partición y agrupamiento en clústeres de la tabla, y la frecuencia del gscan.

  • Existen varias opciones para reducir el costo de los análisis automáticos de calidad de los datos:

  • Separa los cargos por la calidad de los datos de otros cargos en el SKU de procesamiento premium de Dataplex, usa la etiqueta goog-dataplex-workload-type con el valor DATA_QUALITY.

  • Filtra los cargos agregados. Usa las siguientes etiquetas:

    • goog-dataplex-datascan-data-source-dataplex-entity
    • goog-dataplex-datascan-data-source-dataplex-lake
    • goog-dataplex-datascan-data-source-dataplex-zone
    • goog-dataplex-datascan-data-source-project
    • goog-dataplex-datascan-data-source-region
    • goog-dataplex-datascan-id
    • goog-dataplex-datascan-job-id

Próximos pasos