Planifica una migración con linaje de migración

Puedes usar el servicio de linaje de migración para visualizar el flujo de datos y las conexiones en tu base de datos de origen cuando planifiques una migración del almacén de datos de BigQuery.

Cuando creas un linaje de migración, el servicio de linaje proporciona un gráfico que visualiza cómo se mueven los datos a través de tu sistema de origen y cómo se conecta cada tabla o vista en tu sistema de origen, como se muestra en el siguiente diagrama:

Un linaje de migración que muestra un gráfico del flujo de datos.

El servicio de linaje de migración admite los siguientes dialectos de SQL:

  • SQL de Amazon Redshift
  • SQL de Snowflake
  • SQL de Teradata
  • GoogleSQL (BigQuery)

Limitaciones

El servicio de linaje procesa los primeros 5 GB de los registros más antiguos de tu base de datos de origen.

Ubicaciones admitidas

El servicio de linaje de migración está disponible en ubicaciones seleccionadas. Para obtener más información, consulta Ubicaciones del servicio de linaje y del traductor de SQL de BigQuery.

Permisos necesarios

Para obtener los permisos que necesitas para usar el servicio de linaje de migración, pídele a tu administrador que te otorgue el rol de IAM de editor de MigrationWorkflow (roles/bigquerymigration.editor) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para usar el servicio de linaje de la migración. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para usar el servicio de linaje de migración:

  • bigquerymigration.workflows.create
  • bigquerymigration.workflows.get
  • bigquerymigration.lineageDbs.query

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Para obtener más información sobre los roles y permisos de IAM en BigQuery, consulta Roles y permisos de IAM de BigQuery.

Crea un linaje de migración

Para crear un linaje de migración, primero debes ejecutar la herramienta dwh-migration-dumper para generar archivos de registro de SQL de entrada de origen que subirás a Cloud Storage. Después de subir los archivos de entrada a Cloud Storage, puedes generar el linaje de migración con la consola de Google Cloud o la API de BigQuery Migration.

Ejecuta la herramienta dwh-migration-dumper

Selecciona una de las siguientes opciones:

Amazon Redshift

Para compilar y ver un linaje de migración en una base de datos de Amazon Redshift, haz lo siguiente:

  1. Ejecuta la herramienta dwh-migration-dumper para generar un volcado de los archivos del sistema fuente.
  2. Sube los registros de consultas a Cloud Storage.

Snowflake

Para compilar y ver un linaje de migración en una base de datos de Snowflake, haz lo siguiente:

  1. Ejecuta la herramienta dwh-migration-dumper para generar un volcado de los archivos del sistema fuente.
  2. Sube los registros de consultas a Cloud Storage.

Teradata

Para compilar y ver un linaje de migración en una base de datos de Teradata, haz lo siguiente:

  1. Ejecuta la herramienta dwh-migration-dumper para generar un volcado de los archivos del sistema fuente.
  2. Sube los registros de consultas a Cloud Storage.

BigQuery

Para compilar y ver un linaje de migración en una base de datos de BigQuery, haz lo siguiente:

  1. Otorga los siguientes roles a la cuenta o cuenta de servicio:
  2. Instala la herramienta de dwh-migration-dumper.
  3. Para generar metadatos y registros de consultas, ejecuta la herramienta dwh-migration-dumper. Estos metadatos y registros de consultas se encuentran en uno o más archivos ZIP.

    dwh-migration-dumper --connector bigquery
    
    dwh-migration-dumper --connector bigquery-logs
  4. Sube los archivos ZIP a un bucket de Cloud Storage. Para obtener más información sobre la creación de buckets y la carga de archivos a Cloud Storage, consulta Crea un bucket y Sube objetos desde un sistema de archivos.

Genera el linaje de migración

Después de subir a Cloud Storage los archivos ZIP que contienen los metadatos y los registros de consultas, puedes generar el linaje de migración. Selecciona una de las siguientes opciones:

Console

  1. Ve a la página Tus servicios de migración.

    Ir a Tus servicios de migración

  2. En Translate SQL, haz clic en Translate > Traducción por lotes.

  3. En Configuración de traducción, ingresa lo siguiente:

    1. En Nombre visible, especifica un nombre para el trabajo de linaje. El nombre puede contener letras, números o guiones bajos.
    2. En Ubicación de procesamiento, selecciona la ubicación en la que deseas que se ejecute el trabajo de linaje.
    3. En Dialecto de origen, selecciona tu dialecto de SQL de origen.
    4. En Dialecto de destino, selecciona GoogleSQL.
  4. Haz clic en Siguiente.

  5. En Detalles de la ubicación del archivo, haz lo siguiente:

    1. En Ubicación del directorio de salida, especifica la ruta de acceso a un bucket de Cloud Storage para guardar los archivos de salida de la traducción. Puedes escribir la ruta en el formato bucket_name/folder_name/ o hacer clic en Explorar.
    2. En Ubicación del directorio de entrada, especifica la ruta de acceso a la carpeta de Cloud Storage que contiene los archivos ZIP de registro que subiste anteriormente. Puedes escribir la ruta en el formato bucket_name/folder_name/ o hacer clic en Explorar. También puedes nombrar el subdirectorio de tus archivos de salida en el campo Nombre del subdirectorio de salida.
    3. Para agregar archivos de entrada adicionales, haz clic en Add an input directory location.
  6. Haz clic en Siguiente.

  7. Selecciona la casilla de verificación Linaje de los registros de consultas.

  8. Haz clic en Crear.

El trabajo de linaje ahora se está ejecutando. El trabajo puede tardar varias horas en completarse, según el tamaño de la entrada. Una vez que se completa el trabajo, la herramienta proporciona un vínculo al linaje de migración generado.

API

Para crear un trabajo de linaje, ejecuta el siguiente comando curl:

  curl -d "{
    \"tasks\": {
      \"TASK_NAME\": {
        \"type\": \"Experimental_Lineage\",
        \"translation_details\": {
          \"target_base_uri\": \"BUCKET_PATH\",
          \"source_target_mapping\": {
            \"source_spec\": {
              \"base_uri\": \"BUCKET_PATH\"
            }
          },
          \"target_types\": \"LINEAGE\"
        }
      }
    }
  }
  " \
    -H "Content-Type:application/json" \
    -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows

Reemplaza lo siguiente:

  • TASK_NAME: Es un nombre para identificar este trabajo de linaje.
  • BUCKET_PATH: Es la ruta de acceso al bucket de Cloud Storage que contiene tus archivos ZIP de entrada.
  • PROJECT_ID: Es el ID del proyecto de tu proyecto deGoogle Cloud .
  • LOCATION: Es una ubicación de procesamiento. Este valor debe ser eu o us.

Esta llamada devuelve un mensaje similar al siguiente:

  {
    "name": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID",
    "tasks": {
      "task_name": { /*...*/ }
    },
    "state": "RUNNING"
  }

El trabajo de linaje ahora se está ejecutando. El trabajo puede tardar varias horas en completarse, según el tamaño de la entrada. Para verificar el estado del trabajo de linaje, ejecuta el siguiente comando de curl con el ID del flujo de trabajo:

  curl \
  -H "Content-Type:application/json" \
  -H "Authorization:Bearer " -X GET https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID

Una vez que se completa el trabajo, la herramienta proporciona un vínculo a la vista de linaje generada.

Abre el linaje de migración

Después de generar un linaje de migración, puedes abrirlo con una de las siguientes opciones:

Console

  1. Ve a la página Tus servicios de migración.

    Ir a Tus servicios de migración

  2. En Translate SQL, haz clic en Ver recientes.

  3. En la página Traducciones de SQL, haz clic en el nombre del trabajo para seleccionar el trabajo de linaje completo. Los trabajos de linaje tienen el valor de salida Lineage.

  4. En la página Detalles de la traducción, haz clic en Linaje de datos.

API

Para abrir el linaje de una migración completada, ejecuta el siguiente comando curl con la API de BigQuery Migration:

  curl \
  -H "Content-Type:application/json" \
  -H "Authorization:Bearer " -X GET https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de tu proyecto deGoogle Cloud .
  • LOCATION: Es una ubicación de procesamiento. Este valor debe ser eu o us.
  • WORKFLOW_ID: Es el ID del flujo de trabajo del linaje generado.

Navega al vínculo incluido en el campo taskResult.translationTaskResult.consoleUri del mensaje de salida.

Cómo trabajar con el linaje de la migración

En las siguientes secciones, se describen las formas en que puedes usar el linaje de migración para trabajar con tus datos y tu base de datos de origen.

Comprende los términos del linaje de migración

En un linaje de migración, se usan los siguientes términos:

Condiciones Descripción
Secuencias de comandos Secuencias de comandos SQL y otros programas que se pueden ver en los registros de la base de datos que se transfieren durante la compilación del linaje. Las secuencias de comandos se componen de instrucciones, que, en la mayoría de los casos, son instrucciones de SQL individuales.
Nodos Son los vértices del gráfico de linaje. Estos constan de tablas y columnas.
Tablas También se conocen como relaciones, incluidas las tablas comunes, las vistas, los archivos estructurados y otros recursos similares a tablas.
Columnas También se conocen como atributos, incluidas las columnas de la tabla, las proyecciones de la vista, las seudocolumnas, los campos similares a columnas en archivos y otros recursos, y las subcolumnas, como los campos de struct.
Conexiones de integración Son las conexiones entre los nodos de linaje que indican interacciones debido a que una canalización ejecuta una secuencia de comandos que leyó o escribió esos nodos. Los bordes se anotan con marcas de tiempo, predicados y otros metadatos del momento en que se derivó el borde. Un nodo adyacente a otro nodo con un borde se denomina conexión directa, y una ruta de bordes entre dos nodos se denomina conexión indirecta.
Bordes de linaje Son aristas direccionales que indican que el nodo fuente se incluyó en una cláusula, como una cláusula FROM, WHERE o GROUP BY, que influyó en los datos del nodo de destino.
Usuarios y canalizaciones Son las etiquetas de metadatos que proporciona la base de datos de origen sobre quién y qué ejecutó las secuencias de comandos. No tienen un significado inherente para el motor de linaje, pero se usan para agrupar secuencias de comandos por origen.

En las siguientes secciones, se describen las diferentes páginas de un linaje de migración.

Revisa la página de destino

La página de destino del linaje de migración muestra el ID del trabajo de linaje, un campo de búsqueda para ubicar objetos de linaje por nombre y una lista de sugerencias que destaca algunos objetos de linaje que podrían ser de interés. La página también incluye los recuentos totales de tablas, canalizaciones y usuarios en todo el linaje de migración.

Para navegar a una tabla, vista o columna en particular, busca el objeto en el campo de búsqueda o haz clic en uno de los objetos sugeridos en la página de destino.

Revisa la página del nodo

Para revisar los nodos de tu linaje de migración, haz clic en una de las siguientes pestañas.

Pestaña Flujo de datos

En la pestaña Flujo de datos, se muestra una representación visual de una parte del gráfico de linaje. Es la página predeterminada cuando ves una tabla o columna por primera vez en el servicio de linaje. En el gráfico, se visualiza cómo se mueven los datos a través de tu sistema fuente. Los nodos de este gráfico representan tablas o vistas, mientras que las aristas entre los nodos representan el flujo de datos desde los nodos de la izquierda hacia los de la derecha.

Cada tabla del gráfico Flujo de datos muestra su nombre no calificado. Para ver el nombre completamente calificado de una tabla con el prefijo de la base de datos y el esquema, mantén el puntero sobre el nodo para mostrar su información sobre la herramienta. Cada tabla indica su esquema, como se muestra en la barra vertical del nodo. Todos los esquemas del linaje se ordenan alfabéticamente y se les asigna un color, de modo que las tablas del mismo esquema tienen las mismas barras de color, y las tablas de esquemas con nombres similares tienen barras de color similares.

Cada nodo muestra un ícono que indica sus propiedades:

  • Monitor: Es una vista, no una tabla.
  • cached: Una tabla que siempre se actualiza por completo (se trunca y, luego, se vuelve a escribir). Haz clic en el ícono para ver las secuencias de comandos adyacentes a esta tabla.
  • cached: Es una tabla que no siempre se actualiza por completo (se trunca y, luego, se vuelve a escribir). Haz clic en el ícono para ver las secuencias de comandos adyacentes a esta tabla.
  • timer: Es una tabla que duró poco. Mantén el puntero sobre el ícono para ver la duración durante la que existió la tabla.
  • snowflake: Es una tabla en la que se escribió por última vez hace más de siete días, lo que sugiere que se trata de una tabla con datos estáticos o que se escriben con poca frecuencia.

Para revisar los objetos en el gráfico de Flujo de datos, haz lo siguiente:

  • Para ver una lista de las columnas de una tabla, haz clic en ella. Esta vista incluye el nombre de cada columna, así como su tipo de datos, según se determina a partir de un volcado de metadatos proporcionado o se deduce del SQL que se ve en los registros de consultas.
  • Para ver el gráfico de linaje a nivel de columna de una columna, haz clic en ella. En el gráfico de linaje a nivel de la columna, los bordes representan flujos de datos que afectan la columna de destino.
  • Para ver los detalles de una arista, haz clic en ella en el gráfico. Esta vista incluye vínculos a las secuencias de comandos de SQL que indujeron la arista.

    Se genera una arista desde un nodo de origen a un nodo de destino cuando una instrucción de SQL hace referencia al nodo de origen mientras la sentencia calcula datos que se insertan en el nodo de destino. Por lo general, esto implica la transferencia de datos desde la fuente hasta el destino, pero la pestaña Flujo de datos también muestra una arista cuando el nodo de origen se usa en una cláusula WHERE o GROUP BY que afecta el destino. Para filtrar solo las transferencias de datos, activa el botón Mostrar aristas que no son de datos en la barra de herramientas.

Pestaña Conexiones (Connections)

En la pestaña Conexiones de un nodo de linaje, se muestra una lista de los nodos cercanos en el gráfico de linaje. De forma predeterminada, los nodos conectados se ordenan según la distancia de la ruta más corta desde el nodo actual. Los nodos que requieren menos aristas para llegar desde el nodo actual se enumeran primero. Puedes cambiar el orden con la opción Ordenar.

De forma predeterminada, la lista de conexiones incluye los nodos ascendentes (productor) y descendentes (consumidor) del nodo actual. Puedes cambiar este filtro con el control Tipo. En la columna Distancia, los nodos que se encuentran antes del nodo actual se muestran con una flecha que apunta hacia arriba y la distancia de la ruta más corta hacia atrás a ese nodo desde el nodo actual. Del mismo modo, los nodos que se encuentran después del nodo actual se muestran con una flecha que apunta hacia abajo y la distancia de la ruta más corta hacia adelante a ese nodo desde el nodo actual. Un nodo puede ser tanto ascendente como descendente del nodo actual si forma parte de un ciclo.

Para descargar un archivo que contenga todos los nodos que se muestran, haz clic en Descargar CSV.

Pestaña Usuarios

En la pestaña Usuarios de un nodo, se muestran los usuarios que ejecutaron secuencias de comandos que leyeron o escribieron el nodo, o bien los nodos que se encuentran antes o después de él en el flujo. De forma predeterminada, el usuario que realizó la mayor cantidad de acciones separadas aparece primero. Puedes cambiar el orden con la opción Ordenar.

Para descargar un archivo que contenga todos los usuarios que se muestran, haz clic en Descargar CSV.

Pestaña Canalizaciones

En la pestaña Pipelines de un nodo, se muestran las canalizaciones que ejecutaron secuencias de comandos que leyeron o escribieron el nodo o los nodos que se encuentran antes o después de él en la canalización. De forma predeterminada, la canalización que realizó la mayor cantidad de acciones separadas aparece primero en la lista. Puedes cambiar el orden con la opción Ordenar.

Para descargar un archivo que contenga todas las canalizaciones que se muestran, haz clic en Descargar CSV.

Pestaña Código

La pestaña Code de un nodo muestra todas las secuencias de comandos de SQL que se ven en los archivos de entrada que leen datos de ese nodo o escriben datos en él. Las menciones del nodo se destacan en el texto de SQL. Haz clic en un guion para expandir el texto completo. Puedes cambiar la configuración del filtro para filtrar la lista de secuencias de comandos que se muestran.

Para descargar un archivo que contenga todos los fragmentos de código que se muestran, haz clic en Descargar CSV.

Revisa la página de conexión de integración

Para revisar las aristas de los nodos en tu gráfico de linaje, haz clic en una de las siguientes pestañas.

Pestaña Detalles (Details)

En la pestaña Detalles de una arista, se muestran predicados y categorías que describen las operaciones realizadas por los secuencias de comandos que indujeron la arista.

Los predicados se indican como códigos de tres partes separados por guiones. La primera parte es r, que indica que la fuente de la arista es una relación, o a, que indica que la fuente de la arista es un atributo. La segunda parte es una de las siguientes abreviaturas que indica la forma en que el nodo fuente influyó en los datos del nodo objetivo:

  • has: La relación de origen contiene el atributo de destino.
  • dat: La fuente copia o transfiere datos al destino.
  • res: La fuente filtra o restringe la cardinalidad del destino en una cláusula como WHERE, HAVING o JOIN ON.
  • grp: La fuente se usa en una cláusula GROUP BY que afecta al objetivo.

La tercera parte también es r o a, lo que indica si el destino de la arista es una relación o un atributo.

Las categorías de borde pueden incluir lo siguiente:

  • Predicados dat:
    • AGGREGATE: La fuente se usó en un cálculo agregado que escribió el destino.
    • EXACT_COPY: Los datos de la fuente se copiaron en su totalidad al destino.
    • FUNCTION: La fuente se usó para calcular el objetivo.
    • IDENTITY_COPY: No se calculó el objetivo. El destino era una copia literal de la fuente sin ninguna conversión ni transmisión.
    • PARTITION_PROMOTION: El destino contiene datos de la fuente como resultado de la promoción de una partición de la fuente al destino.
    • WEAK_COPY: Los datos de la fuente se copiaron, al menos, parcialmente en el destino.
  • Predicados res:
    • FILTER: La fuente se usó en una comparación que escribió el destino.
    • KEY: Los datos de la fuente se usaron como clave en una comparación de unión que escribió el destino.
  • Predicados grp:
    • GROUP: Los datos de la fuente se usaron como clave en una cláusula GROUP BY, lo que afecta el destino.

Pestaña Código

La pestaña Código de una arista muestra las secuencias de comandos SQL que la generaron. Los nodos de origen y destino de la arista se destacan cuando se mencionan en el texto SQL.

¿Qué sigue?