Crear perfiles de calidad de los datos y validarlos

En esta guía de inicio rápido, se muestra cómo usar Knowledge Catalog (antes Dataplex Universal Catalog) para crear un perfil de una tabla de BigQuery, definir reglas de calidad de los datos basadas en estadísticas del perfil y ejecutar un análisis de calidad de los datos.

Completa los siguientes pasos:

  1. Crea un conjunto de datos y una tabla de BigQuery con datos de muestra de bicicletas compartidas que contengan anomalías intencionales, como duplicados y valores nulos, para probar las capacidades de análisis.
  2. Crea y ejecuta un análisis de perfil de datos en la tabla. El perfilamiento de datos calcula estadísticas a nivel de la columna, como los porcentajes de valores nulos, los recuentos de valores únicos y las distribuciones de valores. Para obtener más información, consulta Acerca de la generación de perfiles de datos.
  3. Revisa los resultados del análisis del perfil de datos para encontrar patrones y posibles anomalías.
  4. Define reglas de calidad de los datos según los resultados del perfil y ejecuta un análisis de calidad de los datos. Los análisis de calidad de los datos validan tus datos según las reglas definidas para identificar anomalías. Para obtener más información, consulta Información sobre la calidad de los datos automáticos.
  5. Revisa los resultados de la evaluación para ver qué reglas de calidad se aprobaron o rechazaron.

Antes de comenzar

Haz lo siguiente para configurar tu proyecto:

  1. Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Knowledge Catalog and BigQuery APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  7. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  8. Verify that billing is enabled for your Google Cloud project.

  9. Enable the Knowledge Catalog and BigQuery APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

Roles obligatorios

Para obtener los permisos que necesitas para crear y ejecutar análisis de perfil y calidad de los datos, y administrar recursos de BigQuery, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Si tienes los permisos necesarios para administrar el acceso a IAM en tu proyecto, puedes otorgar estos roles a tu propia cuenta de usuario ejecutando los siguientes comandos de gcloud:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:USER_EMAIL" \
    --role="roles/dataplex.dataScanEditor"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:USER_EMAIL" \
    --role="roles/bigquery.dataOwner"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:USER_EMAIL" \
    --role="roles/bigquery.jobUser"

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de Google Cloud .
  • USER_EMAIL: La dirección de correo electrónico de tu cuenta de usuario (por ejemplo, name@example.com)

Otorga permisos al agente de servicio de Knowledge Catalog

Un agente de servicio es una cuenta de servicio administrada por Google que Knowledge Catalog usa para ejecutar consultas de análisis en BigQuery en tu nombre.

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

  2. Crea el agente de servicio de Knowledge Catalog:

    gcloud beta services identity create --service=dataplex.googleapis.com
    

    Este comando crea el agente de servicio si aún no se aprovisionó y muestra su correo electrónico. Si tu proyecto ya tiene un agente de servicio de Knowledge Catalog, el comando devolverá la identidad existente sin realizar ningún cambio.

    El resultado es similar a lo siguiente:

    serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com
    

    Toma nota del PROJECT_NUMBER en el resultado para los próximos pasos.

  3. Otorga el rol de Usuario de trabajo de BigQuery (roles/bigquery.jobUser) para que Knowledge Catalog pueda ejecutar trabajos de consulta en tu proyecto:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com" \
       --role="roles/bigquery.jobUser"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • PROJECT_NUMBER: Es el número del proyecto de Google Cloud .
  4. Otorga el rol de visualizador de datos de BigQuery (roles/bigquery.dataViewer) para que el agente de servicio pueda leer los datos y el esquema de tu tabla:

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com" \
       --role="roles/bigquery.dataViewer"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • PROJECT_NUMBER: Es el número del proyecto de Google Cloud .

Crea un conjunto de datos y una tabla de muestra

Para probar los análisis de calidad de los datos y la generación de perfiles de forma segura sin afectar los datos de producción, configura un conjunto de datos de BigQuery dedicado y crea una tabla que contenga datos de muestra directamente en tu proyecto.

Console

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

    Ir a BigQuery

  2. En el panel Explorador, haz clic en Ver acciones junto al ID de tu proyecto y, luego, en Crear conjunto de datos.

  3. En el campo ID de conjunto de datos, ingresa quickstart_data_profile.

  4. En la lista Ubicación de los datos, selecciona us-central1 (Iowa).

  5. Haz clic en Crear conjunto de datos.

  6. En el editor de consultas, ingresa la siguiente consulta en SQL para generar datos de ejemplo de bicicletas compartidas en tu tabla bikeshare_trips:

    CREATE OR REPLACE TABLE `PROJECT_ID.quickstart_data_profile.bikeshare_trips` AS
    SELECT
    -- Duplicate and null IDs
    IF(MOD(x, 100) = 0, NULL, IF(x > 9900, 1000 + (x - 9900), 1000 + x)) AS trip_id,
    -- Nulls and unrecognized category values
    CASE
      WHEN MOD(x, 50) = 0 THEN 'INVALID_TIER'
      WHEN MOD(x, 25) = 0 THEN NULL
      WHEN MOD(x, 4) = 0 THEN 'Local Rider'
      WHEN MOD(x, 4) = 1 THEN 'Walk Up'
      WHEN MOD(x, 4) = 2 THEN 'Student Membership'
      ELSE 'Weekender'
    END AS subscriber_type,
    -- Nulls and malformed bike IDs
    CASE
      WHEN MOD(x, 60) = 0 THEN 'UNKNOWN'
      WHEN MOD(x, 30) = 0 THEN NULL
      ELSE CAST(2000 + x AS STRING)
    END AS bike_id,
    -- Null dates and future timestamps
    CASE
      WHEN MOD(x, 70) = 0 THEN NULL
      WHEN MOD(x, 40) = 0 THEN TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL x MINUTE)
      ELSE TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL x MINUTE)
    END AS start_time,
    -- Nulls and placeholder station values
    CASE
      WHEN MOD(x, 20) = 0 THEN 'STATION_UNKNOWN'
      WHEN MOD(x, 10) = 0 THEN NULL
      ELSE CAST(100 + MOD(x, 50) AS STRING)
    END AS start_station_id,
    -- Negative durations, zeros, and extreme outliers
    CASE
      WHEN MOD(x, 15) = 0 THEN -10.0
      WHEN MOD(x, 35) = 0 THEN 0.0
      WHEN MOD(x, 200) = 0 THEN 99999.0
      ELSE CAST(MOD(x, 120) + 1.5 AS FLOAT64)
    END AS duration_minutes
    FROM UNNEST(GENERATE_ARRAY(1, 10000)) AS x;

    Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud .

  7. Haz clic en Ejecutar.

gcloud

  1. En Cloud Shell, crea el conjunto de datos quickstart_data_profile en la región us-central1:

    bq --location=us-central1 mk --dataset PROJECT_ID:quickstart_data_profile
    

    Reemplaza PROJECT_ID por el ID del proyecto deGoogle Cloud .

  2. Crea y propaga la tabla de muestra bikeshare_trips:

    bq query \
    --use_legacy_sql=false \
    "CREATE OR REPLACE TABLE \`PROJECT_ID.quickstart_data_profile.bikeshare_trips\` AS
    SELECT
      IF(MOD(x, 100) = 0, NULL, IF(x > 9900, 1000 + (x - 9900), 1000 + x)) AS trip_id,
      CASE
        WHEN MOD(x, 50) = 0 THEN 'INVALID_TIER'
        WHEN MOD(x, 25) = 0 THEN NULL
        WHEN MOD(x, 4) = 0 THEN 'Local Rider'
        WHEN MOD(x, 4) = 1 THEN 'Walk Up'
        WHEN MOD(x, 4) = 2 THEN 'Student Membership'
        ELSE 'Weekender'
      END AS subscriber_type,
      CASE
        WHEN MOD(x, 60) = 0 THEN 'UNKNOWN'
        WHEN MOD(x, 30) = 0 THEN NULL
        ELSE CAST(2000 + x AS STRING)
      END AS bike_id,
      CASE
        WHEN MOD(x, 70) = 0 THEN NULL
        WHEN MOD(x, 40) = 0 THEN TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL x MINUTE)
        ELSE TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL x MINUTE)
      END AS start_time,
      CASE
        WHEN MOD(x, 20) = 0 THEN 'STATION_UNKNOWN'
        WHEN MOD(x, 10) = 0 THEN NULL
        ELSE CAST(100 + MOD(x, 50) AS STRING)
      END AS start_station_id,
      CASE
        WHEN MOD(x, 15) = 0 THEN -10.0
        WHEN MOD(x, 35) = 0 THEN 0.0
        WHEN MOD(x, 200) = 0 THEN 99999.0
        ELSE CAST(MOD(x, 120) + 1.5 AS FLOAT64)
      END AS duration_minutes
    FROM UNNEST(GENERATE_ARRAY(1, 10000)) AS x;"
    

Crea y ejecuta un análisis de perfil de datos

Un análisis de perfil de datos examina las filas de tu tabla para calcular estadísticas, como recuentos de valores únicos, proporciones de valores nulos y rangos de distribución de datos.

Console

  1. En la consola de Google Cloud , ve a la página Calidad y creación de perfiles de datos.

    Ir a Creación de perfiles de datos y calidad

  2. Haz clic en Crear análisis del perfil de datos.

  3. En Elegir tipo, deja seleccionada la opción Análisis de perfil de datos.

  4. En General, en el campo Nombre visible, ingresa bikeshare-trips-profile.

  5. En Tabla para analizar, en el campo Tabla, haz clic en Explorar, selecciona la tabla quickstart_data_profile.bikeshare_trips en tu proyecto y, luego, haz clic en Seleccionar.

  6. En Modo, selecciona Estándar.

  7. En Alcance, selecciona Datos completos.

  8. En Programar, selecciona A pedido.

  9. Deja las otras opciones de configuración con sus valores predeterminados.

  10. Haz clic en Ejecutar análisis.

    Comienza el trabajo de análisis. Por lo general, Knowledge Catalog tarda entre 3 y 5 minutos en ejecutar el análisis y calcular las estadísticas de tu tabla.

gcloud

  1. En Cloud Shell, crea el análisis del perfil de datos:

    gcloud dataplex datascans create data-profile bikeshare-trips-profile \
     --location=us-central1 \
     --data-source-resource="//bigquery.googleapis.com/projects/PROJECT_ID/datasets/quickstart_data_profile/tables/bikeshare_trips" \
     --description="Data profile scan for sample bikeshare dataset"
    

    Reemplaza PROJECT_ID por el ID del proyecto deGoogle Cloud .

  2. Ejecuta el análisis del perfil de datos:

    gcloud dataplex datascans run bikeshare-trips-profile \
     --location=us-central1
    

    El trabajo de análisis se inicia en segundo plano. Por lo general, el análisis tarda entre 3 y 5 minutos en completarse.

Revisa los resultados del análisis del perfil de datos

Una vez que finalice el análisis, revisa las estadísticas de las columnas para comprender las características de tus datos.

  1. En la consola de Google Cloud , ve a la página Calidad y creación de perfiles de datos.

    Ir a Creación de perfiles de datos y calidad

  2. En la lista de análisis, haz clic en bikeshare-trips-profile.

  3. Si aún no se ejecutó el análisis, haz clic en Ejecutar ahora.

  4. En la sección Descripción general, espera a que el trabajo de análisis más reciente muestre el estado Sin errores.

    En la siguiente imagen, se muestra el trabajo de análisis en la sección Descripción general con el estado Completado:

    Sección de descripción general del análisis de perfil de los viajes en bicicleta compartida que muestra el estado del trabajo como completado y el vínculo Ver resultados.

  5. Inspecciona los resultados del análisis para comprender la distribución de los datos de tu tabla y, luego, identifica los posibles objetivos de validación de la calidad de los datos. En la pestaña Resultados del trabajo más reciente, Knowledge Catalog muestra métricas a nivel de la columna, incluidas % de nulos, Recuento y porcentaje de valores únicos, Valores principales y Estadísticas resumidas.

    En la siguiente tabla, se muestra qué métrica de perfil debes verificar para cada columna de la tabla, cómo interpretar los resultados y a qué regla de calidad de los datos debes orientarte:

    Columna de la tabla Métrica de resultado del perfil Qué buscar y cómo interpretar Objetivo de validación de la calidad de los datos
    duration_minutes Estadísticas de resumen Se detectaron valores negativos: El valor de Min es de -10.0 minutos. La duración transcurrida del viaje no puede ser negativa, lo que indica que las grabaciones del sensor o del viaje no son válidas. Segmenta con una regla de Validez (rango) (como duration_minutes ≥ 1.0) para requerir tiempos de viaje transcurridos positivos.
    start_station_id Porcentaje nulo Alrededor del 5% de valores nulos: El porcentaje de valores nulos es superior al 0%, lo que indica que algunos registros no tienen identificadores de salida de la estación (como los viajes sin estaciones o sin quioscos). Segmenta con una regla de Integridad (no nulo) para detectar y marcar los registros con IDs de estación faltantes.
    subscriber_type Valores principales Categorías inesperadas: La lista de valores frecuentes incluye categorías no estándar (como INVALID_TIER) junto con niveles de membresía válidos, lo que indica que hay problemas de validación de la entrada del usuario o de la transferencia de datos. Segmenta tus anuncios con una regla de Validez (establecida) para exigir que todos los valores entrantes pertenezcan a tu lista permitida de tipos de membresía.
    trip_id Recuento y porcentaje únicos Se detectaron IDs duplicados: La singularidad es inferior al 100% (alrededor del 98%), lo que indica que hay registros de identificadores repetidos. Las claves primarias y los identificadores de viaje deben ser 100% únicos. Segmenta con una regla de Unicidad para marcar y evitar registros de viajes duplicados.

Estos resultados del perfil te brindan una referencia basada en evidencia para crear reglas de calidad de los datos segmentadas.

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

Ahora que descubriste cómo se ven los datos, configura reglas automáticas de calidad de los datos para detectar anomalías. En este paso, configurarás cuatro tipos de reglas comunes según los resultados de tu perfil.

Console

  1. En la consola de Google Cloud , ve a la página Calidad y creación de perfiles de datos.

    Ir a Creación de perfiles de datos y calidad

  2. Haz clic en Crear análisis de calidad de los datos.

  3. En General, en el campo Nombre visible, ingresa bikeshare-trips-quality.

  4. En Tabla para analizar, en el campo Tabla, haz clic en Explorar, selecciona la tabla quickstart_data_profile.bikeshare_trips y, luego, haz clic en Seleccionar.

  5. En Alcance, selecciona Datos completos.

  6. En Programar, selecciona A pedido.

  7. Deja el resto de los parámetros con la configuración predeterminada y haz clic en Continuar.

  8. En la sección Reglas de calidad de los datos, haz clic en Agregar reglas y selecciona Tipos de reglas integradas.

  9. En el panel Agregar reglas, selecciona las columnas y los tipos de reglas:

    • En el campo Elegir columnas, haz clic en Explorar y selecciona duration_minutes, start_station_id, subscriber_type y trip_id.
    • Haz clic en Seleccionar.
    • En la lista Choose rule types, selecciona Range check, NULL check, Value-set check y Uniqueness check, y, luego, haz clic en OK.
    • En la lista de reglas generadas, selecciona la casilla de verificación de cada una de las siguientes reglas:

      • duration_minutes: Verificación de rango
      • start_station_id: Verificación de NULL
      • subscriber_type: Verificación del conjunto de valores
      • trip_id: Verificación de unicidad
    • Haz clic en Seleccionar.

  10. En la tabla Reglas de calidad de los datos, configura los parámetros de las reglas que requieren valores:

    • En duration_minutes (Verificación de rango), haz clic en Editar, ingresa 1.0 en el campo Valor mín. y haz clic en Guardar.
    • En subscriber_type (Verificación del conjunto de valores), haz clic en Editar, luego en Agregar valor para agregar cada uno de los valores permitidos (Local Rider, Walk Up, Student Membership y Weekender) y, por último, en Guardar.
  11. Haz clic en Continuar y, luego, en Ejecutar análisis.

gcloud

  1. En Cloud Shell, crea un archivo llamado dq_bikeshare.yaml con especificaciones de reglas que se orienten a las anomalías encontradas en tu perfil:

    cat << 'EOF' > dq_bikeshare.yaml
    rules:
      - column: trip_id
        dimension: UNIQUENESS
        uniquenessExpectation: {}
      - column: start_station_id
        dimension: COMPLETENESS
        nonNullExpectation: {}
      - column: duration_minutes
        dimension: VALIDITY
        rangeExpectation:
          minValue: "1.0"
      - column: subscriber_type
        dimension: VALIDITY
        setExpectation:
          values:
            - "Local Rider"
            - "Walk Up"
            - "Student Membership"
            - "Weekender"
    EOF
    
  2. Crea el análisis de calidad de los datos:

    gcloud dataplex datascans create data-quality bikeshare-trips-quality \
     --location=us-central1 \
     --data-source-resource="//bigquery.googleapis.com/projects/PROJECT_ID/datasets/quickstart_data_profile/tables/bikeshare_trips" \
     --data-quality-spec-file="dq_bikeshare.yaml" \
     --description="Data quality scan for sample bikeshare dataset"
    

    Reemplaza PROJECT_ID por el ID del proyecto deGoogle Cloud .

  3. Ejecuta el análisis de calidad de los datos:

    gcloud dataplex datascans run bikeshare-trips-quality \
     --location=us-central1
    

Revisa las evaluaciones de las reglas de calidad de los datos

Verifica los resultados de la calidad de los datos para ver cómo tus reglas evaluaron los datos de muestra y cómo identificaron las anomalías.

  1. En la consola de Google Cloud , ve a la página Calidad y creación de perfiles de datos.

    Ir a Creación de perfiles de datos y calidad

  2. En la tabla Scans, haz clic en el análisis bikeshare-trips-quality.

  3. En la sección Resumen, haz clic en Ver resultados para abrir los detalles del trabajo.

  4. En el panel Detalles del trabajo, revisa los resultados de la evaluación:

    • Estado de la calidad de los datos: Como se esperaba, las 3 dimensiones evaluadas muestran el estado Failed.

      • Validez: Fallida. La columna duration_minutes contiene valores negativos y la columna subscriber_type contiene valores de membresía no válidos (INVALID_TIER).
      • Integridad: Falló. La columna start_station_id contiene valores nulos.
      • Unicidad: Falló. La columna trip_id contiene registros duplicados.
    • Reglas: En la tabla Reglas, las 4 reglas evaluadas muestran el estado Falló.

      • duration_minutes: Verificación de rango (Error)
      • start_station_id: Verificación de valores nulos (Error)
      • subscriber_type: Verificación de conjunto de valores (Failed)
      • trip_id: Verificación de unicidad (Falló)

      Para cualquier regla que haya fallado, puedes copiar la consulta en SQL en la columna Consulta para obtener registros con errores y ejecutarla en BigQuery para aislar e inspeccionar las filas no válidas.

Ahora, creaste un perfil de una tabla de BigQuery para descubrir estadísticas de columnas y usaste esas estadísticas para definir y validar reglas de calidad de los datos automatizadas.

Realiza una limpieza

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.

Console

  1. En la consola de Google Cloud , ve a la página Calidad y creación de perfiles de datos.

    Ir a Creación de perfiles de datos y calidad

  2. En la tabla Scans, selecciona bikeshare-trips-quality y bikeshare-trips-profile.

  3. Haz clic en Borrar y confirma tu decisión.

  4. Ve a la página de BigQuery.

    Ir a BigQuery

  5. En el panel Explorador, haz clic en Conjuntos de datos.

  6. Selecciona el conjunto de datos quickstart_data_profile y, luego, haz clic en Borrar.

gcloud

En Cloud Shell, borra el análisis de calidad de los datos, el análisis del perfil de datos y el conjunto de datos de muestra:

gcloud dataplex datascans delete bikeshare-trips-quality --location=us-central1 --quiet
gcloud dataplex datascans delete bikeshare-trips-profile --location=us-central1 --quiet
bq rm -r -f -d PROJECT_ID:quickstart_data_profile

Reemplaza PROJECT_ID por el ID del proyecto deGoogle Cloud .

¿Qué sigue?