Execute transformações no BigQuery

Esta página descreve como executar transformações no BigQuery em vez do Spark no Cloud Data Fusion.

Para mais informações, consulte a Vista geral da transferência de transformações.

Antes de começar

O envio de transformações está disponível na versão 6.5.0 e posteriores. Se o seu pipeline for executado num ambiente anterior, pode atualizar a sua instância para a versão mais recente.

Ative o pushdown de transformação no seu pipeline

Consola

Para ativar o pushdown de transformação num pipeline implementado, faça o seguinte:

  1. Aceda à sua instância:

    1. Na Google Cloud consola, aceda à página do Cloud Data Fusion.

    2. Para abrir a instância no Cloud Data Fusion Studio, clique em Instâncias e, de seguida, em Ver instância.

      Aceda a Instâncias

  2. Clique em Menu > Lista.

    É aberto o separador do pipeline implementado.

  3. Clique no pipeline implementado pretendido para o abrir no Pipeline Studio.

  4. Clique em Configurar > Transferência de transformações.

    Ative o envio de transformações.

  5. Clique em Ativar pushdown de transformação.

  6. No campo Conjunto de dados, introduza um nome para o conjunto de dados do BigQuery.

    Opcional: para usar uma macro, clique em M. Para mais informações, consulte o artigo Conjuntos de dados.

  7. Opcional: configure as opções, se necessário.

  8. Clique em Guardar.

Configurações opcionais

.
Propriedade Suporta macros Versões do Cloud Data Fusion suportadas Descrição
Use a ligação Não 6.7.0 e posterior Se deve usar uma associação existente.
Connection Sim 6.7.0 e posterior O nome da associação. Esta associação fornece informações do projeto e da conta de serviço.
Opcional: use a função de macro ${conn(connection_name)}.
ID do projeto do conjunto de dados Sim 6.5.0 Se o conjunto de dados estiver num projeto diferente daquele onde o trabalho do BigQuery é executado, introduza o ID do projeto do conjunto de dados. Se não for indicado nenhum valor, é usado por predefinição o ID do projeto onde a tarefa é executada.
ID do projeto Sim 6.5.0 O Google Cloud ID do projeto.
Tipo de conta de serviço Sim 6.5.0 Selecione uma das seguintes opções:
  • Caminho do ficheiro: o caminho do ficheiro para a conta de serviço.
  • JSON: o conteúdo JSON da conta de serviço.
A predefinição é JSON.
Caminho do ficheiro da conta de serviço Sim 6.5.0 O caminho no sistema de ficheiros local para a chave da conta de serviço usada para autorização. Está definido como auto-detect quando é executado num cluster do Dataproc. Quando executado noutros clusters, o ficheiro tem de estar presente em todos os nós do cluster. A predefinição é auto-detect.
JSON da conta de serviço Sim 6.5.0 O conteúdo do ficheiro JSON da conta de serviço.
Nome do contentor temporário Sim 6.5.0 O contentor do Cloud Storage que armazena os dados temporários. É criado automaticamente se não existir, mas não é eliminado automaticamente. Os dados do Cloud Storage são eliminados depois de serem carregados para o BigQuery. Se este valor não for fornecido, é criado um contentor único e, em seguida, eliminado após a conclusão da execução do pipeline. A conta de serviço tem de ter autorização para criar contentores no projeto configurado.
Localização Sim 6.5.0 A localização onde o conjunto de dados do BigQuery é criado. Este valor é ignorado se o conjunto de dados ou o contentor temporário já existir. A predefinição é a US multirregião.
Nome da chave de encriptação Sim 6.5.1/0.18.1 A chave de encriptação gerida pelo cliente (CMEK) que encripta os dados escritos em qualquer contentor, conjunto de dados ou tabela criados pelo plug-in. Se o contentor, o conjunto de dados ou a tabela já existir, este valor é ignorado.
Mantenha as tabelas do BigQuery após a conclusão Sim 6.5.0 Se deve manter todas as tabelas temporárias do BigQuery criadas durante a execução do pipeline para fins de depuração e validação. A predefinição é Não.
TTL da tabela temporária (em horas) Sim 6.5.0 Defina o TTL da tabela para tabelas temporárias do BigQuery, em horas. Isto é útil como uma salvaguarda caso o pipeline seja cancelado e o processo de limpeza seja interrompido (por exemplo, se o cluster de execução for encerrado abruptamente). Se definir este valor como 0, desativa o TTL da tabela. A predefinição é 72 (3 dias).
Prioridade do trabalho Sim 6.5.0 A prioridade usada para executar tarefas do BigQuery. Selecione uma das seguintes opções:
  1. Em lote: um trabalho em lote é colocado em fila e iniciado assim que os recursos inativos estiverem disponíveis, normalmente, no prazo de alguns minutos. Se a tarefa não for iniciada no prazo de três horas, a respetiva prioridade é alterada para interativa.
  2. Interativo: um trabalho interativo é executado assim que possível e conta para o limite de taxa concorrente e o limite de taxa diário.
A predefinição é Lote.
Fases para forçar a transferência Sim 6.7.0 Fases suportadas para execução sempre no BigQuery. Cada nome artístico tem de estar numa linha separada.
Fases para ignorar a inserção Sim 6.7.0 Fases suportadas para nunca executar no BigQuery. Cada nome artístico tem de estar numa linha separada.
Use a API BigQuery Storage Read Sim 6.7.0 Se deve usar a API BigQuery Storage Read ao extrair registos do BigQuery durante a execução do pipeline. Esta opção pode melhorar o desempenho do envio de transformações, mas acarreta custos adicionais. Isto requer que o Scala 2.12 esteja instalado no ambiente de execução.

Monitorize as alterações de desempenho nos registos

Os registos de tempo de execução do pipeline incluem mensagens que mostram as consultas SQL executadas no BigQuery. Pode monitorizar que fases no pipeline são enviadas para o BigQuery.

O exemplo seguinte mostra as entradas do registo quando a execução do pipeline começa. Os registos indicam que as operações JOIN no seu pipeline foram enviadas para o BigQuery para execução:

  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'

O exemplo seguinte mostra os nomes das tabelas que vão ser atribuídos a cada um dos conjuntos de dados envolvidos na execução 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>

À medida que a execução continua, os registos mostram a conclusão das fases de envio e, eventualmente, a execução das operações JOIN. Por exemplo:

  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

Quando todas as fases estiverem concluídas, é apresentada uma mensagem a indicar que a operação Pull foi concluída. Isto indica que o processo de exportação do BigQuery foi acionado e os registos vão começar a ser lidos no pipeline após o início desta tarefa de exportação. Por exemplo:

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

Se a execução do pipeline encontrar erros, estes são descritos nos registos.

Para ver detalhes sobre a execução das operações do BigQuery, como a utilização de recursos, o tempo de execução e as causas de erros, pode ver os dados da tarefa do BigQuery através do ID da tarefa, que aparece nos registos de tarefas.JOIN

Reveja as métricas do pipeline

Para mais informações acerca das métricas que o Cloud Data Fusion fornece para a parte do pipeline que é executada no BigQuery, consulte as métricas de pipeline de pushdown do BigQuery.

O que se segue?