Ejecute transformaciones en BigQuery

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

Para obtener más información, consulta la descripción general del envío de transformación.

Antes de comenzar

Pushdown de transformación está disponible en la versión 6.5.0 y versiones posteriores. Si tu canalización se ejecuta en un entorno anterior, puedes actualizar tu instancia a la versión más reciente.

Habilite el Pushdown de transformación en su canalización

Console

Para habilitar el Pushdown de transformación en una canalización implementada, haz lo siguiente:

  1. Ve a la página Instancias y haz clic en Ver instancia.

    Ir a Instancias

    Se abrirá la instancia en la IU de Cloud Data Fusion.

  2. Haz clic en Menú > Lista.

    Se abrirá la pestaña de la canalización implementada.

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

  4. Haz clic en Configure > Transformation Pushdown.

    Habilitar Pushdown de transformación

  5. Haga clic en Habilitar Pushdown de transformación.

  6. En el campo Conjunto de datos, ingresa un nombre para el 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.

Configuración opcional

.
Propiedad Admite macros Versiones compatibles con Cloud Data Fusion Descripción
Usar conexión No 6.7.0 y versiones posteriores Indica si se debe usar una conexión existente.
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 ${conn(connection_name)}, la función.
ID del proyecto del conjunto de datos 6,5 Si el conjunto de datos se encuentra en un proyecto diferente que el lugar en el que se ejecuta el trabajo de BigQuery, ingresa el ID del proyecto. Si no se proporciona ningún valor, este usará el ID del proyecto de forma predeterminada.
ID del proyecto 6,5 El ID del proyecto de Google Cloud.
Tipo de cuenta de servicio 6,5 Selecciona una de las siguientes opciones:
  • File Path: Es la ruta del archivo a la cuenta de servicio.
  • JSON: el contenido JSON de la cuenta de servicio
El valor predeterminado es JSON.
Ruta de archivo del cuenta de servicio 6,5 La ruta en el sistema de archivos local a la clave de la cuenta de servicio que se usó para la autorización. Se establece en auto-detect cuando se ejecuta en un clúster de Dataproc. Cuando se ejecuta en otros clústeres, el archivo debe estar presente en cada nodo del clúster. El valor predeterminado es auto-detect.
JSON de la cuenta de servicio 6,5 El contenido del archivo JSON de la cuenta de servicio
Nombre del bucket temporal 6,5 El bucket de Cloud Storage que almacena los datos temporales. Se creará automáticamente si no existe, pero no se borrará automáticamente. Los datos de Cloud Storage se borran después de cargarse en BigQuery. Si no se proporciona este valor, se crea un bucket único y, luego, se borra después de que finaliza la ejecución de la canalización. La cuenta de servicio debe tener permiso para crear buckets en el proyecto configurado.
Location 6,5 La ubicación en la que se crea el conjunto de datos de BigQuery. Este valor se ignora si el conjunto de datos o el bucket temporal ya existe. El valor predeterminado es la multirregión US.
Nombre de la clave de encriptación 6.5.1/0.18.1 La clave de encriptación administrada por el cliente (CMEK) que encripta los datos escritos en cualquier bucket, conjunto de datos o tabla que creó el complemento. Si el bucket, el conjunto de datos o la tabla ya existen, se ignora este valor.
Retención de tablas de BigQuery después de la finalización 6,5 Ya sea para conservar todas las tablas temporales de BigQuery que se crearon durante la canalización, se ejecutan con fines de depuración y validación. El valor predeterminado es No.
TTL de la tabla temporal (en horas) 6,5 Configura el TTL de la tabla para las tablas temporales de BigQuery en horas. Esto es útil como una protección contra fallas en caso de que la canalización se cancele y el proceso de limpieza se interrumpa (por ejemplo, si el clúster de ejecución se cierra de forma repentina). Si configuras este valor como 0, se inhabilita el TTL de la tabla. El valor predeterminado es 72 (3 días).
Prioridad del trabajo 6,5 La prioridad utilizada para ejecutar trabajos de BigQuery. Selecciona una de las siguientes opciones:
  1. Por lotes: Un trabajo por lotes se pone en cola y se inicia en cuanto los recursos inactivos estén disponibles, por lo general, en unos minutos. Si el trabajo no se inicia en un plazo de tres horas, su prioridad se cambia a interactiva.
  2. Interactivo: Se ejecuta un trabajo interactivo lo antes posible y se tiene en cuenta para los límites de frecuencia simultáneos y diarios.
La configuración predeterminada es Batch.
Etapas para forzar la pushdown 6.7.0 Etapas admitidas para ejecutar siempre en BigQuery Cada nombre de etapa debe estar en una línea distinta.
Etapas para omitir un pushdown 6.7.0 Etapas admitidas para nunca ejecutarse en BigQuery. Cada nombre de etapa debe estar en una línea separada.
Usa la API de BigQuery Storage Read 6.7.0 Si se debe usar la API de lectura de BigQuery Storage cuando se extraen registros de BigQuery durante la ejecución de la canalización. Esta opción puede mejorar el rendimiento del Pushdown de transformación, pero genera costos adicionales. Esto requiere que Scala 2.12 esté instalado en el entorno de ejecución.

Supervisa los cambios de rendimiento en los registros

Los registros del entorno de ejecución de la canalización incluyen mensajes que muestran las consultas de SQL que se ejecutan en BigQuery. Puedes supervisar qué etapas de la canalización se envían a 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 la canalización se enviaron hacia 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 tabla que se asignarán para cada conjunto de datos involucrado 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 etapas de envío y, con el tiempo, 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 completan todas las etapas, aparece un mensaje que indica que se completó la operación Pull. Esto indica que se activó el proceso de exportación de BigQuery y los registros comenzarán a leerse en la canalización una vez que comience este trabajo de exportación. Por ejemplo:

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

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

Para obtener detalles sobre la ejecución de las operaciones JOIN de BigQuery, como el uso de recursos, el tiempo de ejecución y las causas del error, puedes ver los datos de trabajo de BigQuery con el ID de trabajo, que aparece en los registros del trabajo.

¿Qué sigue?