Ejecutar transformaciones en BigQuery

En esta página se describe cómo ejecutar transformaciones en BigQuery en lugar de en Spark en Cloud Data Fusion.

Para obtener más información, consulta la descripción general de la inserción de transformaciones.

Antes de empezar

La inserción de transformaciones está disponible en la versión 6.5.0 y posteriores. Si tu pipeline se ejecuta en un entorno anterior, puedes actualizar tu instancia a la versión más reciente.

Habilitar la inserción de transformaciones en el flujo de procesamiento

Consola

Para habilitar la inserción de transformaciones en una canalización implementada, siga estos pasos:

  1. Ve a tu instancia:

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

    2. Para abrir la instancia en Cloud Data Fusion Studio, haga clic en Instancias y, a continuación, en Ver instancia.

      Ir a Instancias

  2. Haz clic en Menú > Lista.

    Se abre la pestaña de la canalización implementada.

  3. Haz clic en la canalización implementada que quieras para abrirla en Pipeline Studio.

  4. Haga clic en Configurar > Transformación pushdown.

    Habilita la inserción de transformaciones.

  5. Haga clic en Habilitar la inserción de transformaciones.

  6. En el campo Conjunto de datos, introduce un nombre de conjunto de datos de BigQuery.

    Opcional: Para usar una macro, haz clic en M. Para obtener más información, consulta Conjuntos de datos.

  7. Opcional: Configura las opciones si es necesario.

  8. Haz clic en Guardar.

Configuraciones opcionales

.
Propiedad Admite macros Versiones compatibles de Cloud Data Fusion Descripción
Usar conexión No 6.7.0 y versiones posteriores Si se debe usar una conexión ya creada.
Conexión 6.7.0 y versiones posteriores El nombre de la conexión. Esta conexión proporciona información sobre el proyecto y la cuenta de servicio.
Opcional: usa la macro de la función ${conn(connection_name)}.
ID de proyecto del conjunto de datos 6.5.0 Si el conjunto de datos está en un proyecto diferente al que ejecuta el trabajo de BigQuery, introduce el ID del proyecto del conjunto de datos. Si no se indica ningún valor, se usa de forma predeterminada el ID del proyecto en el que se ejecuta el trabajo.
ID del proyecto 6.5.0 El Google Cloud ID del proyecto.
Tipo de cuenta de servicio 6.5.0 Selecciona una de las siguientes opciones:
  • Ruta del archivo: la ruta del archivo de la cuenta de servicio.
  • JSON: el contenido JSON de la cuenta de servicio.
El valor predeterminado es JSON.
Ruta del archivo de la cuenta de servicio 6.5.0 Ruta del sistema de archivos local a la clave de la cuenta de servicio utilizada para la autorización. Se define como auto-detect cuando se ejecuta en un clúster de Dataproc. Cuando se ejecuta en otros clústeres, el archivo debe estar presente en todos los nodos del clúster. El valor predeterminado es auto-detect.
JSON de la cuenta de servicio 6.5.0 El contenido del archivo JSON de la cuenta de servicio.
Nombre del segmento temporal 6.5.0 Segmento de Cloud Storage que almacena los datos temporales. Se crea automáticamente si no existe, pero no se elimina automáticamente. Los datos de Cloud Storage se eliminan después de cargarse en BigQuery. Si no se proporciona este valor, se crea un contenedor único que se elimina cuando finaliza la ejecución de la pipeline. La cuenta de servicio debe tener permiso para crear cubos en el proyecto configurado.
Ubicación 6.5.0 Ubicación en la que se crea el conjunto de datos de BigQuery. Este valor se ignora si el conjunto de datos o el contenedor temporal ya existen. El valor predeterminado es la multirregión US.
Nombre de clave de cifrado 6.5.1/0.18.1 La clave de cifrado gestionada por el cliente (CMEK) que cifra los datos escritos en cualquier segmento, conjunto de datos o tabla creados por el complemento. Si el contenedor, el conjunto de datos o la tabla ya existen, este valor se ignora.
Conservar las tablas de BigQuery después de completar el proceso 6.5.0 Indica si se deben conservar todas las tablas temporales de BigQuery que se crean durante la ejecución de la canalización con fines de depuración y validación. El valor predeterminado es No.
Tiempo de vida (TTL) de la tabla temporal (en horas) 6.5.0 Define el TTL de las tablas temporales de BigQuery en horas. Esto es útil como medida de seguridad en caso de que se cancele la canalización y se interrumpa el proceso de limpieza (por ejemplo, si el clúster de ejecución se cierra de forma abrupta). Si asignas el valor 0, se inhabilita el TTL de la tabla. El valor predeterminado es 72 (3 días).
Prioridad del trabajo 6.5.0 Prioridad utilizada para ejecutar tareas de BigQuery. Selecciona una de las siguientes opciones:
  1. Batch: una tarea por lotes se pone en cola y se inicia en cuanto hay recursos disponibles, normalmente en unos minutos. Si el trabajo no se inicia en un plazo de tres horas, su prioridad cambia a interactiva.
  2. Interactiva: un trabajo interactivo se ejecuta lo antes posible y se tiene en cuenta para el límite de frecuencia simultánea y el límite de frecuencia diario.
El valor predeterminado es Lote.
Fases para forzar la inserción 6.7.0 Fases admitidas que siempre se ejecutan en BigQuery. Cada nombre de fase debe estar en una línea independiente.
Fases para omitir la inserción 6.7.0 Fases admitidas que nunca se ejecutan en BigQuery. Cada nombre de fase debe estar en una línea independiente.
Usar la API Storage Read de BigQuery 6.7.0 Indica si se debe usar la API Storage Read de BigQuery al extraer registros de BigQuery durante la ejecución de la canalización. Esta opción puede mejorar el rendimiento de la inserción de transformaciones, pero conlleva costes adicionales. Para ello, debe instalar Scala 2.12 en el entorno de ejecución.

Monitorizar los cambios en el rendimiento en los registros

Los registros de tiempo de ejecución de la canalización incluyen mensajes que muestran las consultas de SQL que se ejecutan en BigQuery. Puedes monitorizar qué fases de la canalización se insertan en BigQuery.

En el siguiente ejemplo se muestran las entradas de registro cuando comienza la ejecución de la canalización. Los registros indican que las operaciones JOIN de tu canalización se han enviado a BigQuery para su ejecución:

  INFO  [Driver:i.c.p.g.b.s.BigQuerySQLEngine@190] - Validating join for stage 'Users' can be executed on BigQuery: true
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@131] - Starting push for dataset 'UserProfile'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@131] - Starting push for dataset 'UserDetails'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@292] - Starting join for dataset 'Users'
  INFO  [Driver:i.c.p.g.b.s.BigQuerySQLEngine@190] - Validating join for stage 'UserPurchases' can be executed on BigQuery: true
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@131] - Starting push for dataset 'Purchases'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@292] - Starting join for dataset 'UserPurchases'
  INFO  [Driver:i.c.p.g.b.s.BigQuerySQLEngine@190] - Validating join for stage 'MostPopularNames' can be executed on BigQuery: true
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@131] - Starting push for dataset 'FirstNameCounts'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@292] - Starting join for dataset 'MostPopularNames'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@193] - Starting pull for dataset 'MostPopularNames'

En el siguiente ejemplo se muestran los nombres de las tablas que se asignarán a cada uno de los conjuntos de datos implicados en la ejecución de pushdown:

  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@145] - Executing Push operation for dataset Purchases stored in table <TABLE_ID>
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@145] - Executing Push operation for dataset UserDetails stored in table <TABLE_ID>
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@145] - Executing Push operation for dataset FirstNameCounts stored in table <TABLE_ID>
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@145] - Executing Push operation for dataset UserProfile stored in table <TABLE_ID>

A medida que continúa la ejecución, los registros muestran la finalización de las fases de inserción y, finalmente, la ejecución de las operaciones JOIN. Por ejemplo:

  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@133] - Completed push for dataset 'UserProfile'
  DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@133] - Completed push for dataset 'UserDetails'
  DEBUG [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@235] - Executing join operation for dataset Users
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQueryJoinDataset@118] - Creating table `<TABLE_ID>` using job: <JOB_ID> with SQL statement: SELECT `UserDetails`.id AS `id` , `UserDetails`.first_name AS `first_name` , `UserDetails`.last_name AS `last_name` , `UserDetails`.email AS `email` , `UserProfile`.phone AS `phone` , `UserProfile`.profession AS `profession` , `UserProfile`.age AS `age` , `UserProfile`.address AS `address` , `UserProfile`.score AS `score` FROM `your_project.your_dataset.<DATASET_ID>` AS `UserProfile` LEFT JOIN `your_project.your_dataset.<DATASET_ID>` AS `UserDetails` ON `UserProfile`.id = `UserDetails`.id
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQueryJoinDataset@151] - Created BigQuery table `<TABLE_ID>
  INFO  [batch-sql-engine-adapter:i.c.p.g.b.s.BigQuerySQLEngine@245] - Executed join operation for dataset Users

Cuando se hayan completado todas las fases, aparecerá un mensaje que indica que la operación Pull se ha completado. Esto indica que se ha activado el proceso de exportación de BigQuery y que los registros empezarán a leerse en la canalización después de que se inicie esta tarea de exportación. Por ejemplo:

DEBUG [batch-sql-engine-adapter:i.c.c.e.s.b.BatchSQLEngineAdapter@196] - Completed pull for dataset 'MostPopularNames'

Si se producen errores durante la ejecución de la canalización, se describen en los registros.

Para obtener información sobre la ejecución de las operaciones de BigQuery JOIN , como el uso de recursos, el tiempo de ejecución y las causas de los errores, puedes consultar los datos del trabajo de BigQuery mediante el ID de trabajo, que aparece en los registros de trabajos.

Consultar las métricas del flujo de procesamiento

Para obtener más información sobre las métricas que proporciona Cloud Data Fusion para la parte de la canalización que se ejecuta en BigQuery, consulta Métricas de canalización de inserción de BigQuery.

Siguientes pasos