Importa metadatos de Snowflake Horizon

Desglosa los silos de datos y evita cambiar de herramienta con un conector de Knowledge Catalog (antes Dataplex Universal Catalog) para importar metadatos de Snowflake Horizon directamente a Google Cloud.

Este conector admite instancias de Snowflake Horizon alojadas en Google Cloud, Microsoft Azure o Amazon Web Services (AWS).

En la siguiente tabla, se enumeran los metadatos que captura el conector de Snowflake Horizon:

Categoría Metadatos capturados
Técnico
  • Metastore (cuenta de Snowflake)
  • Catálogo (base de datos)
  • Esquema
  • Tabla (incluidas las tablas transitorias, externas, dinámicas, interactivas, híbridas y de Apache Iceberg) y columnas
  • Vista (estándar, materializada y segura)
  • Etapas (internas y externas), importadas como conjuntos de archivos
  • Funciones definidas por el usuario (UDF) y procedimientos almacenados
Operacional
  • Métricas de uso (vistas, lecturas y escrituras durante 30 y 90 días; usuarios frecuentes y tablas unidas con frecuencia durante 30 días)
  • Claves primarias y claves externas
Empresa
  • Etiquetas (etiquetas de objetos, columnas y miembros de vistas semánticas)
  • Calidad de los datos (expectativas de la función de métricas de datos, detección de anomalías y resultados de la supervisión automática de la calidad de los datos)
  • Generación de perfiles de datos (mediciones de funciones de métricas de datos y resultados de la clasificación de datos)
  • Uniones y relaciones (inferidas del historial de consultas, declaradas en vistas semánticas y dependencias de vista a tabla)
  • Propietario (rol de propietario), hora de creación y hora de la última modificación
Semántica
  • Vista semántica (tablas lógicas, dimensiones, hechos, métricas, relaciones, sinónimos, valores de muestra e instrucciones personalizadas)
  • Propietario de la vista semántica
  • Uso de vistas semánticas (vistas y lecturas durante 30 y 90 días; usuarios frecuentes y tablas unidas con frecuencia durante 30 días)

Limitaciones

El conector de Snowflake Horizon tiene las siguientes limitaciones:

  • No se admite el linaje.
  • El conector importa los metadatos de tus tablas de Iceberg, pero no los vincula automáticamente a las tablas físicas subyacentes en tu catálogo de Iceberg REST (IRC).
  • Las etiquetas, los resultados de la calidad de los datos y de la generación de perfiles, los resultados de la clasificación, las uniones del historial de consultas y las estadísticas de uso que leen ACCESS_HISTORY (usuarios frecuentes y tablas unidas con frecuencia) requieren Snowflake Enterprise Edition o una versión posterior.

Antes de comenzar

Antes de importar metadatos de Snowflake Horizon, completa las siguientes tareas:

  1. Otorga los roles y permisos necesarios.
  2. Habilita la API de Dataplex y la API del Servicio de transferencia de datos de BigQuery.
  3. Cumple con los requisitos previos de Snowflake Horizon.
  4. Cumple con los requisitos previos de redes.

Permisos y funciones de IAM

Para crear y administrar un trabajo de conector de Knowledge Catalog, necesitas roles de Identity and Access Management (IAM) que otorguen permisos para Knowledge Catalog y el Servicio de transferencia de datos de BigQuery.

Para obtener los permisos que necesitas para configurar un conector de Snowflake Horizon, pídele a tu administrador que te otorgue los siguientes roles de IAM:

También debes otorgar al agente de servicio del Servicio de transferencia de datos de BigQuery (service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com) los siguientes roles:

  • Importador de grupos de entradas de Dataplex (roles/dataplex.entryGroupImporter), en el grupo de entradas de destino o en el proyecto que lo contiene. Este rol permite que el agente de servicio importe metadatos al grupo de entrada (dataplex.entryGroups.import).
  • Propietario de entradas y vínculo de entrada de Dataplex (roles/dataplex.entryOwner) en el proyecto que contiene el grupo de entradas de destino. Este rol permite que el agente de servicio importe metadatos de uso, empresariales y de calidad de los datos, y vínculos de entrada. Incluye los siguientes permisos:

    • dataplex.entryGroups.useDataProfileAspect
    • dataplex.entryGroups.useDataQualityScorecardAspect
    • dataplex.entryGroups.useManagedConnectorTypes
    • dataplex.entryGroups.useReferenceEntryLink
    • dataplex.entryGroups.useSchemaAspect
    • dataplex.entryGroups.useSchemaJoinAspect
    • dataplex.entryGroups.useSchemaJoinEntryLink
    • dataplex.entryGroups.useUsageAspect
    • dataplex.entryLinks.reference

    Otorga este rol en el proyecto, no solo en el grupo de entradas, ya que la importación verifica el permiso dataplex.entryLinks.reference en el proyecto. Si el agente de servicio no tiene este permiso en el proyecto, la ejecución de la transferencia falla con un error como Permission 'dataplex.entryLinks.reference' denied y no se importan metadatos.

En lugar de otorgar ambos roles, puedes otorgar el rol de propietario del grupo de entradas de Dataplex (roles/dataplex.entryGroupOwner) en el proyecto que contiene el grupo de entradas de destino. Este rol incluye los permisos de ambos roles y también permite que el agente de servicio cree, borre y administre el acceso a todos los grupos de entradas del proyecto.

Si quieres obtener más información para otorgar roles, consulta Administra el acceso.

Habilita las APIs

Habilita la API de Dataplex y la API del Servicio de transferencia de datos de BigQuery.

Habilitar las API

Requisitos previos de Snowflake Horizon

Si también quieres ejecutar consultas en SQL o trabajos de Spark en el catálogo remoto de Snowflake, consulta Configura una conexión multinube para el catálogo de Snowflake Horizon.

El conector accede a Snowflake como un usuario de Snowflake con autenticación de par de claves y lee los metadatos del esquema SNOWFLAKE.ACCOUNT_USAGE. No se admite la autenticación con contraseña. Un administrador de Snowflake, como un usuario con el rol ACCOUNTADMIN, debe completar los siguientes pasos:

  1. Crea un rol para el conector y otórgale acceso a ACCOUNT_USAGE y a un almacén que ejecute las consultas de metadatos:

    CREATE ROLE IF NOT EXISTS DATAPLEX_CATALOG_READER;
    GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
      TO ROLE DATAPLEX_CATALOG_READER;
    GRANT USAGE ON WAREHOUSE WAREHOUSE_NAME
      TO ROLE DATAPLEX_CATALOG_READER;
    

    Reemplaza WAREHOUSE_NAME por el nombre del almacén de Snowflake que ejecuta las consultas de metadatos.

  2. Crea un usuario de servicio para el conector o usa un usuario existente y otórgale el rol:

    CREATE USER IF NOT EXISTS USERNAME
      TYPE = SERVICE
      DEFAULT_ROLE = DATAPLEX_CATALOG_READER
      DEFAULT_WAREHOUSE = WAREHOUSE_NAME;
    GRANT ROLE DATAPLEX_CATALOG_READER TO USER USERNAME;
    

    Reemplaza USERNAME por el nombre del usuario de Snowflake para el conector.

  3. Genera un par de clave RSA con la clave privada en formato PKCS#8:

    openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
    openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
    

    Para encriptar la clave privada, reemplaza -nocrypt por -v2 aes-256-cbc y proporciona la frase de contraseña cuando configures el conector. Mantén seguro el archivo de clave privada (rsa_key.p8), ya que lo proporcionas cuando configuras el conector.

  4. Asigna la clave pública al usuario de Snowflake:

    ALTER USER USERNAME SET RSA_PUBLIC_KEY='PUBLIC_KEY';
    

    Reemplaza PUBLIC_KEY por el contenido de rsa_key.pub, sin incluir las líneas -----BEGIN PUBLIC KEY----- y -----END PUBLIC KEY-----.

  5. Opcional: Para importar metadatos adicionales, otorga al rol del conector los siguientes privilegios:

    • Perfiles de datos y resultados de calidad de los datos: Otorga el rol de aplicación SNOWFLAKE.DATA_QUALITY_MONITORING_VIEWER:

      GRANT APPLICATION ROLE SNOWFLAKE.DATA_QUALITY_MONITORING_VIEWER
        TO ROLE DATAPLEX_CATALOG_READER;
      

      Los resultados de la calidad de los datos se importan solo para las verificaciones que el rol puede ver, lo que requiere USAGE en la base de datos y el esquema, SELECT en la tabla y USAGE en las funciones de métricas de datos personalizadas.

    • Claves primarias y claves externas: Otorga USAGE en la base de datos y el esquema, y SELECT o REFERENCES en las tablas.

    • Valores de muestra e instrucciones personalizadas de las vistas semánticas: Otorga REFERENCES en las vistas semánticas.

Para encontrar el identificador de la cuenta que ingresas cuando configuras el conector, ejecuta la siguiente consulta en Snowflake:

SELECT CURRENT_ORGANIZATION_NAME() || '-' || CURRENT_ACCOUNT_NAME();

Requisitos previos de Herramientas de redes

Para permitir que el Servicio de transferencia de datos de BigQuery se conecte de forma segura a bases de datos externas o fuentes de datos en la nube de terceros con una dirección IP privada dentro de una red privada, configura un adjunto de red a través de Private Service Connect.

Si te conectas a un entorno local o a una instancia alojada en la nube con una dirección IP pública, no se requiere un adjunto de red.

Configura un conector de Snowflake Horizon

Configura un conector de Snowflake Horizon con la consola deGoogle Cloud o la API de REST.

Console

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

    Ir a Knowledge Catalog

  2. En el menú de navegación, en la sección Administrar, haz clic en Conectores y, luego, en Agregar conexión.

  3. En la lista Conectores, selecciona la tarjeta Snowflake Horizon.

  4. En la sección Detalles de la fuente de datos, proporciona los detalles de conexión de tu cuenta de Snowflake:

    • En Adjunto de red, selecciona un adjunto de red existente si es necesario o crea uno.
    • En Identificador de cuenta, ingresa el identificador de tu cuenta de Snowflake sin .snowflakecomputing.com (por ejemplo, myorg-myaccount). También puedes ingresar un localizador de cuenta, como xy12345.us-east-2.aws.
    • En Nombre de usuario, ingresa el usuario de Snowflake que configuraste para la autenticación de par de claves.
    • En Clave privada, ingresa la clave privada PKCS#8 del usuario, como el contenido del archivo rsa_key.p8.
    • Opcional: En Frase de contraseña de clave privada, si la clave privada está encriptada, ingresa su frase de contraseña.
    • Opcional: En Almacén, ingresa el almacén que ejecuta las consultas de metadatos. Si no especificas un almacén, el conector usa el almacén predeterminado del usuario.
    • Opcional: En Rol, ingresa el rol que usa el conector, como DATAPLEX_CATALOG_READER. Si no especificas un rol, el conector usa el rol predeterminado del usuario.
    • En Objetos de Snowflake que se transferirán, haz clic en Explorar para seleccionar las bases de datos, los esquemas o los objetos individuales (tablas, vistas, vistas semánticas, etapas, funciones y procedimientos) que se importarán. Si seleccionas una base de datos o un esquema, se importarán todos los objetos que contenga. Las funciones y los procedimientos se enumeran con sus tipos de argumentos, como CALC(NUMBER, VARCHAR).

      También puedes ingresar objetos de forma manual en el formato TYPE:ACCOUNT/DATABASE[/SCHEMA[/OBJECT]], en el que TYPE es CATALOG (o DATABASE), SCHEMA, TABLE, VIEW, SEMANTIC-MODEL, FILESET, FUNCTION o PROCEDURE (por ejemplo, SCHEMA:myorg-myaccount/SALES/PUBLIC). Ingresa ACCOUNT en el formato ORG_NAME-ACCOUNT_NAME en minúsculas que se muestra en Explorar. Los nombres de la base de datos, el esquema y el objeto distinguen mayúsculas de minúsculas. No se admiten patrones de nombres.

  5. En la sección Configuración de destino, haz lo siguiente:

    • Haz clic en Explorar y selecciona un grupo de entradas de Knowledge Catalog existente para almacenar los metadatos importados, o haz clic en Crear un grupo de entradas nuevo.
    • Selecciona si deseas establecer permisos en el grupo de entradas ahora o más adelante. Para permitir que los usuarios vean los metadatos importados, establece permisos en el grupo de entradas. Si no otorgaste el rol de importador de grupos de entradas de Dataplex (roles/dataplex.entryGroupImporter) o el permiso dataplex.entryGroups.import al agente de servicio del Servicio de transferencia de datos de BigQuery a nivel del proyecto, otórgalo en este grupo de entradas. Aún debes otorgar el rol de propietario de entradas y vínculo de entrada de Dataplex (roles/dataplex.entryOwner) en el proyecto, ya que el permiso dataplex.entryLinks.reference se verifica a nivel del proyecto. Para obtener más información, consulta Roles y permisos de IAM.
  6. En la sección Nombre de la configuración de transferencia, en Nombre visible, ingresa un nombre para el trabajo de importación de metadatos.

  7. En la sección Opciones de programación, configura la frecuencia del trabajo de importación de metadatos. Si seleccionas A pedido, el trabajo se ejecuta solo cuando lo activas de forma manual.

  8. Opcional: En la sección Opciones de notificación, configura una notificación por correo electrónico o Pub/Sub para los errores de los trabajos.

  9. Opcional: En la sección Opciones avanzadas, configura los parámetros de encriptación. Si seleccionas una clave de encriptación administrada por el cliente (CMEK), esta encriptará los datos transitorios que se almacenen en etapa de pruebas antes de iniciar los trabajos de importación de metadatos de Knowledge Catalog. La clave no encripta los metadatos en el grupo de entradas de destino de Knowledge Catalog.

  10. Haz clic en Guardar.

REST

Usa el método projects.locations.transferConfigs.create. En el recurso TransferConfig, configura los siguientes campos:

  • Configura el campo dataSourceId como "snowflake_horizon".
  • En el campo metadataDestination, completa el campo dataplexConfiguration.entryGroup con la ruta de acceso del recurso del grupo de entradas de Knowledge Catalog de destino: projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID.
  • En el campo params, configura los siguientes parámetros:
    • connector.accountIdentifier (obligatorio): Es el identificador de tu cuenta de Snowflake sin .snowflakecomputing.com (por ejemplo, myorg-myaccount) o un localizador de cuenta (como xy12345.us-east-2.aws).
    • connector.authentication.username (obligatorio): el usuario de Snowflake.
    • connector.authentication.privateKey (obligatorio): Es la clave privada del usuario en formato PEM PKCS#8.
    • connector.authentication.privateKeyPassphrase (opcional): Es la frase de contraseña de la clave privada, si la clave está encriptada.
    • connector.warehouse (opcional): Es el almacén que ejecuta las consultas de metadatos. Si omites este parámetro, el conector usa el almacén predeterminado del usuario.
    • connector.role (opcional): Es el rol que usa el conector. Si omites este parámetro, el conector usará el rol predeterminado del usuario.
    • connector.networkAttachment (opcional): Es el adjunto de red en el formato projects/PROJECT_ID/regions/REGION/networkAttachments/NETWORK_ATTACHMENT_ID.
    • assets (obligatorio): Es la lista de objetos de Snowflake que se importarán en el formato TYPE:ACCOUNT/DATABASE[/SCHEMA[/OBJECT]], como ["SCHEMA:myorg-myaccount/SALES/PUBLIC"].
  • Opcional: Para mantener la clave privada fuera de la configuración de transferencia, almacénala en Secret Manager:
    1. Establece connector.authentication.privateKey (y connector.authentication.privateKeyPassphrase, si usas uno) en el nombre del recurso de la versión del Secret con el formato projects/SECRET_PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID y agrega esos nombres de parámetros al campo paramConfig.secretManagerManagedParams.
    2. Otorga el rol de descriptor de acceso a secretos de Secret Manager (roles/secretmanager.secretAccessor) en cada secreto al agente de servicio del Servicio de transferencia de datos de BigQuery del proyecto que contiene la configuración de transferencia (service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com). Los secretos pueden estar en un proyecto diferente. Si el agente de servicio no puede leer un secreto, la ejecución falla antes de que comience con un error como Failed to retrieve secret ... Permission 'secretmanager.versions.access' denied. El Servicio de transferencia de datos de BigQuery lee los secrets al comienzo de cada ejecución, por lo que, si configuras VERSION_ID como latest, se usará una clave rotada a partir de la siguiente ejecución.

En el siguiente ejemplo, se muestra un cuerpo de solicitud TransferConfig:

{
  "displayName": "snowflake-metadata-import",
  "dataSourceId": "snowflake_horizon",
  "schedule": "every 24 hours",
  "params": {
    "connector.accountIdentifier": "myorg-myaccount",
    "connector.authentication.username": "USERNAME",
    "connector.authentication.privateKey": "PRIVATE_KEY",
    "connector.warehouse": "WAREHOUSE_NAME",
    "connector.role": "DATAPLEX_CATALOG_READER",
    "assets": [
      "SCHEMA:myorg-myaccount/SALES/PUBLIC"
    ]
  },
  "metadataDestination": {
    "dataplexConfiguration": {
      "entryGroup": "projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID"
    }
  }
}

El trabajo se ejecuta automáticamente según tu programa, o puedes activarlo de forma manual.

Supervisa un trabajo del conector de Snowflake Horizon

Supervisa un trabajo del conector de Snowflake Horizon con la consola deGoogle Cloud o la API de REST.

Console

  1. En la consola de Google Cloud , en la página Conectores, haz clic en el nombre visible del trabajo de transferencia de Snowflake Horizon.
  2. En la pestaña Historial de ejecuciones, haz clic en Ver detalles para ver los registros.
  3. Para ver las entradas creadas, haz clic en la pestaña Detalles y, luego, en el vínculo del grupo de entradas Destino de metadatos.

REST

  • Para enumerar las ejecuciones de una configuración de transferencia y ver su estado, usa el método projects.locations.transferConfigs.runs.list.
  • Cada ejecución importa los metadatos recopilados a Knowledge Catalog con un trabajo de importación de metadatos cuyo ID es dts-run-RUN_ID. Para ver el resultado de la importación, como la cantidad de entradas creadas, filtra los registros del trabajo en Logging con la siguiente consulta:

    logName="projects/PROJECT_ID/logs/dataplex.googleapis.com%2Fmetadata_job"
    AND resource.labels.metadata_job_id="dts-run-RUN_ID"
    
  • Para ver el resultado de una importación sin usar Logging, llama al método projects.locations.metadataJobs.get en projects/PROJECT_ID/locations/LOCATION/metadataJobs/dts-run-RUN_ID. En el campo importResult, se muestra la cantidad de entradas y vínculos de entrada creados, actualizados, sin cambios y borrados.

Busca y visualiza metadatos de Snowflake Horizon

  1. En la consola de Google Cloud , ve a la página Búsqueda de Knowledge Catalog.

    Ir a Búsqueda

  2. En el panel Filtros, filtra los recursos de Snowflake Horizon con las secciones Proyecto, Sistemas y Alias de tipo. Para filtrar todos los metadatos de Snowflake Horizon, en la sección Sistemas, selecciona Contexto importado y, luego, en el apartado Conectores administrados, selecciona Snowflake Horizon.

  3. En el campo de búsqueda, ingresa una palabra clave o una consulta de búsqueda en lenguaje natural. Por ejemplo, para ver todos los recursos de Snowflake Horizon a través de la búsqueda por palabras clave, ingresa system=SNOWFLAKE.

    Para obtener más información sobre la búsqueda de recursos, consulta Busca recursos en Knowledge Catalog. Para obtener más información sobre las expresiones que puedes usar en el campo de búsqueda, consulta Sintaxis de búsqueda para Knowledge Catalog.

También puedes usar la API de LookupContext para recuperar el contexto de LLM de recursos específicos de Snowflake Horizon. Para obtener más información, consulta Recupera el contexto de los recursos de datos.

¿Qué sigue?