Crea perfiles y valida la calidad de los datos

Knowledge Catalog (anteriormente, Dataplex Universal Catalog) te permite crear perfiles de tablas de BigQuery para calcular estadísticas a nivel de columna, como porcentajes de valores nulos, recuentos de valores únicos y distribuciones de valores. Luego, puedes usar estas estadísticas para definir reglas de calidad de los datos y validar tus registros en busca de anomalías.

En esta guía de inicio rápido, propagarás una tabla de BigQuery de muestra con anomalías intencionales, ejecutarás un análisis de perfil de datos y evaluarás los resultados con un análisis de calidad de los datos. Para obtener más información, consulta Acerca de la generación de perfiles de datos y Acerca de la calidad de los datos automáticos.

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, if any are not already enabled.

    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, if any are not already enabled.

    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 perfiles 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 de 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: Es 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 consola de Google Cloud , haz clic en Activar Cloud Shell en la barra de herramientas. El aprovisionamiento y la conexión al entorno tardan solo unos momentos.

  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 genera su correo electrónico. Si tu proyecto ya tiene un agente de servicio de Knowledge Catalog, el comando devuelve 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 de la PROJECT_NUMBER en el resultado para los próximos pasos.

  3. Otorga el rol 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 la 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 la generación de perfiles y las verificaciones de calidad de los datos de forma segura sin tocar los datos de producción, configura un conjunto de datos de BigQuery dedicado y crea una tabla que contenga datos de muestra de uso compartido de bicicletas con anomalías intencionales, como duplicados y valores nulos.

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 del 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 muestra de uso compartido de bicicletas 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 perfiles de datos

Un análisis de perfil de datos busca en las filas de la tabla para calcular estadísticas, incluidos los recuentos de valores únicos, las proporciones de valores nulos y los 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 Elige el tipo, deja seleccionada la opción Análisis de perfiles 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 Programa, selecciona On demand.

  9. Deja las demás opciones de configuración con sus valores predeterminados.

  10. Haz clic en Ejecutar análisis.

    Se inicia 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 de perfiles 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 el análisis aún no se ejecutó, 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 Sin errores.

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

    Sección Descripción general del análisis de perfiles de viajes en bicicleta compartida que muestra el estado del trabajo como correcto 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, así, identificar 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 columna, como %nulo, Recuento único y %, Valores principales y Estadísticas de resumen.

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

    Columna de la tabla Métrica de resultados del perfil Qué buscar y cómo interpretar los datos Objetivo de validación de la calidad de los datos
    duration_minutes Estadísticas de resumen Se detectaron valores negativos: El valor mínimo 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. Orienta con una regla de Validez (rango) (como duration_minutes ≥ 1.0) para exigir tiempos de viaje transcurridos positivos.
    start_station_id Porcentaje nulo Alrededor del 5% de valores nulos: El porcentaje nulo es superior al 0%, lo que indica que algunos registros carecen de identificadores de salida de la estación (como viajes sin muelle o sin quiosco). Orienta con una regla de Integridad (no nula) 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 entrada o transferencia de datos de usuario no validados. Segmenta con una regla de Validez (conjunto) para aplicar 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 unicidad es inferior al 100% (alrededor del 98%), lo que indica registros de identificadores repetidos. Las claves primarias y los identificadores de viaje deben ser 100% únicos. Orienta con una regla de Unicidad para marcar y evitar registros de viajes duplicados.

Estos hallazgos de perfiles te brindan un modelo de referencia basado en evidencia para crear reglas de calidad de los datos específicas.

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

Ahora que descubriste cómo se ven los datos, configura reglas de calidad de los datos automatizadas para detectar anomalías. En este paso, configurarás cuatro tipos de reglas comunes en función de 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 Programa, selecciona On demand.

  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 Elige tipos de reglas, selecciona Verificación de rango, Verificación de NULL, Verificación de conjunto de valores y Verificación de unicidad y, luego, haz clic en Aceptar.
    • 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 para las reglas que requieren valores:

    • Para duration_minutes (Verificación de rango), haz clic en Editar, ingresa 1.0 en el campo Valor mínimo y haz clic en Guardar.
    • En subscriber_type (Verificación de conjunto de valores), haz clic en Editar, haz clic en Agregar valor para agregar cada uno de los valores permitidos (Local Rider, Walk Up, Student Membership y Weekender) y haz clic 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 que se encontraron 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 la muestra de datos y las anomalías identificadas.

  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 Análisis, haz clic en el análisis bikeshare-trips-quality.

  3. En la sección Descripción general, 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 un estado de Con errores.

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

      • duration_minutes: Verificación de rango (con errores)
      • start_station_id: Verificación de valores nulos (con errores)
      • subscriber_type: Verificación del conjunto de valores (Fallida)
      • trip_id: Verificación de unicidad (Con errores)

      Para cualquier regla con errores, 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 Análisis, 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?