Crear perfiles y garantizar la calidad de los datos

Crea un flujo de trabajo de calidad de los datos basado en políticas como código. En este instructivo, se explica cómo ir más allá de los procesos manuales basados en la IU definiendo las expectativas de calidad de los datos en archivos declarativos con control de versiones.

Con un enfoque de Human-in-the-Loop, en el que la IA redacta las reglas iniciales y tú las revisas, las perfeccionas y las validas, puedes traducir rápidamente las estadísticas del perfil en un marco de trabajo de calidad de los datos.

Objetivos

  • Aplanar los datos anidados de BigQuery con vistas materializadas para habilitar la creación de perfiles de Knowledge Catalog
  • Ejecuta análisis de perfil de Knowledge Catalog con la biblioteca cliente de Python.
  • Usa Gemini CLI para generar reglas de calidad de los datos basadas en estadísticas de perfil.
  • Validar y, luego, implementar reglas generadas por IA como análisis de calidad de Knowledge Catalog a través de un proceso de revisión con interacción humana

Antes de comenzar

Antes de comenzar, asegúrate de tener un proyecto de Google Cloud con la facturación habilitada.

Prepara el entorno

En los siguientes pasos, se usa Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.

  1. En la Google Cloud consola, haz clic en Activar Cloud Shell en la barra de herramientas de la esquina superior derecha. El aprovisionamiento y la conexión al entorno demorarán unos minutos.

  2. En Cloud Shell, configura tu ID del proyecto y las variables de entorno:

    export PROJECT_ID=$(gcloud config get-value project)
    gcloud config set project $PROJECT_ID
    export LOCATION="us-central1"
    export BQ_LOCATION="us"
    export DATASET_ID="dataplex_dq_codelab"
    export TABLE_ID="ga4_transactions"
    

    Usa us (multirregión) como la ubicación, ya que los datos de muestra públicos también se encuentran en us (multirregión). En el caso de las consultas de BigQuery, los datos de origen y la tabla de destino deben estar en la misma ubicación.

  3. Habilita los servicios obligatorios:

    gcloud services enable dataplex.googleapis.com \
                           bigquery.googleapis.com \
                           serviceusage.googleapis.com
    
  4. Crea un conjunto de datos de BigQuery para almacenar los datos de muestra y los resultados:

    bq --location=us mk --dataset $PROJECT_ID:$DATASET_ID
    
  5. Prepara los datos de muestra, que provienen de un conjunto de datos de comercio electrónico público de Google Merchandise Store.

    El siguiente comando bq crea una tabla nueva, ga4_transactions, en tu conjunto de datos dataplex_dq_codelab. Para garantizar que los análisis se ejecuten rápidamente, solo copia datos de un día (2021-01-31).

    bq query \
    --use_legacy_sql=false \
    --destination_table=$PROJECT_ID:$DATASET_ID.$TABLE_ID \
    --replace=true \
    'SELECT * FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_20210131`'
    
  6. Clona el repositorio de GitHub que contiene la estructura de carpetas y los archivos de asistencia para este instructivo:

    # Perform a shallow clone to get only the latest repository structure without the full history
    git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos.git
    cd devrel-demos
    
    # Specify and download only the folder we need for this lab
    git sparse-checkout set data-analytics/programmatic-dq
    cd data-analytics/programmatic-dq
    

    Este directorio es tu área de trabajo activa.

Datos anidados del perfil

Con la creación de perfiles de datos, Knowledge Catalog encuentra estadísticas para las columnas de nivel superior, como los porcentajes de valores nulos, la unicidad y las distribuciones de valores en tus datos para ayudarte a comprenderlos.

Para obtener estadísticas de los campos anidados, puedes aplanar los datos con un conjunto de vistas materializadas. Esto convierte cada campo anidado en una columna de nivel superior que Knowledge Catalog puede perfilar.

Obtén el esquema anidado

Obtén el esquema completo de la tabla de origen, incluidas todas las estructuras anidadas, y guarda el resultado como un archivo JSON:

bq show --schema --format=json $PROJECT_ID:$DATASET_ID.$TABLE_ID > bq_schema.json

Visualiza el esquema:

jq < bq_schema.json

El archivo bq_schema.json revela estructuras complejas.

Cómo aplanar datos con una vista materializada

Cuando aplanas datos anidados, es importante no desagrupar varios arrays independientes en la misma vista. Si lo haces, se realizará una unión cruzada implícita (producto cartesiano) entre los arrays, lo que multiplicará las filas de forma incorrecta y dañará tus datos.

En su lugar, es mejor crear varias vistas, cada una diseñada para un propósito específico. Cada vista debe mantener un nivel de detalle único y claro. En este paso, crearás las siguientes vistas materializadas:

  • Vista plana de la sesión (mv_ga4_user_session_flat.sql): Una fila por evento.
  • Vista de transacciones (mv_ga4_ecommerce_transactions.sql): Una fila por transacción.
  • Vista de elementos (mv_ga4_ecommerce_items.sql): Una fila por elemento.

El repositorio del proyecto proporciona tres archivos SQL en el directorio devrel-demos/data-analytics/programmatic-dq que definen estas vistas.

Ejecuta estos archivos desde Cloud Shell con los siguientes comandos de BigQuery.

envsubst < mv_ga4_user_session_flat.sql | bq query --use_legacy_sql=false
envsubst < mv_ga4_ecommerce_transactions.sql | bq query --use_legacy_sql=false
envsubst < mv_ga4_ecommerce_items.sql | bq query --use_legacy_sql=false

Ejecuta análisis de perfil con el cliente de Python

Ahora puedes crear y ejecutar análisis de perfil de datos de Knowledge Catalog para cada vista materializada. La siguiente secuencia de comandos de Python usa la biblioteca cliente de google-cloud-dataplex para automatizar este proceso.

Antes de ejecutar la secuencia de comandos, crea un entorno virtual de Python aislado en el directorio de tu proyecto.

# Create the virtual environment
python3 -m venv dq_venv

# Activate the environment
source dq_venv/bin/activate

Instala la biblioteca cliente de Knowledge Catalog dentro del entorno virtual.

# Install the Dataplex client library
pip install google-cloud-dataplex

Ahora que configuraste el entorno y la biblioteca, puedes usar la secuencia de comandos 1_run_dataplex_scans.py. Este script crea perfiles de tus tres vistas materializadas creando y ejecutando un análisis para cada una. Cuando finaliza, genera un resumen estadístico detallado que usarás en el siguiente paso para generar reglas de calidad de los datos potenciadas por IA.

Ejecuta la secuencia de comandos desde la terminal de Cloud Shell.

python3 1_run_dataplex_scans.py

Cómo revisar los análisis de perfiles

Puedes consultar los nuevos análisis de perfil en la consola de Google Cloud .

  1. En el menú de navegación, ve a Knowledge Catalog y selecciona Calidad y creación de perfiles de datos en la sección Administrar.
  2. Verás los tres análisis de perfil junto con el estado de trabajo más reciente. Haz clic en un análisis para explorar sus resultados detallados.

Exporta los resultados del perfil a JSON

Para que Gemini lea los análisis de tu perfil, debes extraer su contenido en un archivo local.

Usa la secuencia de comandos 2_dq_profile_save.py para encontrar el análisis correcto más reciente de la vista mv_ga4_user_session_flat, descargar los datos del perfil y guardarlos en un archivo llamado dq_profile_results.json.

python3 2_dq_profile_save.py

Cuando finalice la secuencia de comandos, se creará un archivo dq_profile_results.json en el directorio. Este archivo contiene los metadatos estadísticos detallados que necesitas para generar reglas de calidad de los datos. Para ver su contenido, ejecuta el siguiente comando:

cat dq_profile_results.json

Genera reglas de calidad de los datos con la Gemini CLI

Ahora puedes usar la CLI de Gemini para leer los resultados del análisis del perfil local.

Escribir manualmente reglas de calidad de los datos para conjuntos de datos complejos lleva mucho tiempo y es propenso a errores. La IA generativa acelera este flujo de trabajo, ya que genera una configuración inicial integral de la calidad de los datos en segundos. Esto te ayuda a pasar de la ejecución manual de tareas a la supervisión de alto nivel.

Para iniciar Gemini CLI, usa el siguiente comando:

gemini

Ahora puedes generar reglas de calidad. Dado que la CLI puede leer archivos en tu directorio actual, puede usar directamente los datos de análisis de tu perfil nuevo.

Dale instrucciones a Gemini para que cree un plan

Pídele a Gemini que actúe como un analista experto y proponga un plan para crear tus reglas de calidad de los datos. Dile a Gemini que aún no escriba el archivo YAML para que se concentre en el análisis. Gemini analiza el archivo JSON y devuelve un plan estructurado

You are an expert Google Cloud Dataplex engineer.
Your first task is to create a plan. I have a file in the current directory named ./dq_profile_results.json.
Based on the statistical data within that file, propose a step-by-step plan to create a Dataplex data quality rules file.
Your plan should identify which specific columns are good candidates for rules like nonNullExpectation, setExpectation, or rangeExpectation, and explain why based on the metrics (for example, "Plan to create a nonNullExpectation for column X because its null percentage is 0%").
Do not write the YAML file yet. Just provide the plan.

Genera reglas de calidad de los datos

El plan de Gemini se basa completamente en patrones estadísticos y no tiene conocimiento específico de tu empresa.

Revisa el plan y hazte las siguientes preguntas:

  • ¿Se alinea con tus objetivos y contexto comerciales?
  • ¿Alguna regla estadísticamente sólida es poco práctica (como un recuento de filas estricto para una tabla en crecimiento)?

Refina el plan con Gemini o aprueba el plan tal como está con el siguiente ejemplo de instrucción. La instrucción comienza con algunos comentarios y, luego, le indica a Gemini que genere el archivo dq_rules.yaml en tu directorio de trabajo y que cumpla con la especificación de DataQualityRule, ya que Knowledge Catalog requiere una estructura YAML precisa. Esto ayuda a evitar errores de sintaxis o el uso de versiones de esquema desactualizadas.


- "The plan looks good. Please proceed."
- "The rowCount rule is not necessary, as the table size changes daily. The rest of the plan is approved. Please proceed."
- "For the setExpectation on the geo_continent column, please also include 'Antarctica'."

Once you have incorporated my feedback, please generate the `dq_rules.yaml` file.

You must adhere to the following strict requirements:

- Schema Compliance: The YAML structure must strictly conform to the DataQualityRule specification. For a definitive source of truth, you must refer to the sample_rule.yaml file in the current directory and the DataQualityRule class definition. Search for the `data_quality.py` file inside the `./dq_venv/lib/` directory to read this class definition.

- Data-Driven Values: All rule parameters, such as thresholds or expected values, must be derived directly from the statistical metrics in dq_profile_results.json.

- Rule Justification: For each rule, add a comment (#) on the line above explaining the justification, as you outlined in your plan.

- Output Purity: The final output must only be the raw YAML code block, perfectly formatted and ready for immediate deployment.

Crea y ejecuta un análisis de calidad de los datos

Ahora tienes un conjunto de reglas de calidad de los datos generadas por el agente que puedes registrar y, luego, implementar como un análisis.

  1. Para salir de Gemini CLI, ingresa /quit o presiona Ctrl+C dos veces.

  2. Luego, crea un análisis de datos en Knowledge Catalog:

    export DQ_SCAN="dq-scan"
    gcloud dataplex datascans create data-quality $DQ_SCAN \
        --project=$PROJECT_ID \
        --location=$LOCATION \
        --data-quality-spec-file=dq_rules.yaml \
        --data-source-resource="//bigquery.googleapis.com/projects/$PROJECT_ID/datasets/$DATASET_ID/tables/mv_ga4_user_session_flat"
    
  3. Por último, ejecuta el análisis:

    gcloud dataplex datascans run $DQ_SCAN --location=$LOCATION --project=$PROJECT_ID
    

    Este comando crea un análisis de calidad de los datos llamado dq-scan.

  4. Comprueba el progreso del análisis en la sección Knowledge Catalog de la consola de Google Cloud .

    1. En el menú de navegación, ve a Knowledge Catalog y selecciona Calidad y creación de perfiles de datos en la sección Administrar.
    2. Busca el elemento dq-scan. Cuando se complete el análisis, haz clic en él para ver los resultados.

Realiza una limpieza

Para evitar cargos recurrentes de facturación por los recursos que creaste en este instructivo, bórralos.

Borra los análisis de Knowledge Catalog

Borra tu perfil y los análisis de calidad con los nombres específicos de los análisis de este codelab:

# Delete the Data Quality Scan
gcloud dataplex datascans delete dq-scan \
    --location=us-central1 \
    --project=$PROJECT_ID --quiet

# Delete the Data Profile Scans
gcloud dataplex datascans delete profile-scan-mv-ga4-user-session-flat \
    --location=us-central1 \
    --project=$PROJECT_ID --quiet

gcloud dataplex datascans delete profile-scan-mv-ga4-ecommerce-transactions \
    --location=us-central1 \
    --project=$PROJECT_ID --quiet

gcloud dataplex datascans delete profile-scan-mv-ga4-ecommerce-items \
    --location=us-central1 \
    --project=$PROJECT_ID --quiet

Borra el conjunto de datos de muestra

Borra tu conjunto de datos temporal de BigQuery y sus tablas.

bq rm -r -f --dataset $PROJECT_ID:dataplex_dq_codelab

Borra archivos locales

Desactiva el entorno virtual de Python y quita el repositorio clonado y su contenido:

deactivate
cd ../../..
rm -rf devrel-demos

Conclusión

Felicitaciones. Acabas de crear un flujo de trabajo de administración de datos programático de extremo a extremo.

Al vincular Gemini con Knowledge Catalog, creaste una base para la administración asistida por IA. Este enfoque no reemplaza el circuito de gobernanza, pero acelera el proceso de creación de reglas para que puedas concentrarte en validar y perfeccionar las reglas según tu lógica empresarial.

¿Qué sigue?