Executar transformações no BigQuery

Nesta página, descrevemos como executar transformações no BigQuery em vez do Spark no Cloud Data Fusion.

Para mais informações, consulte a Visão geral do Pushdown de transformação.

Antes de começar

O Pushdown de transformação está disponível na versão 6.5.0 e posteriores. Se o pipeline for executado em um ambiente de versão anterior, será possível fazer upgrade da instância para a versão mais recente.

Ativar o push-down de transformação no pipeline

Console

Para ativar o pushdown de transformação em um pipeline implantado, faça o seguinte:

  1. Acesse sua instância:

    1. No console do Google Cloud, acesse a página do Cloud Data Fusion.

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

      Acesse "Instâncias"

  2. Clique em Menu >. Lista.

    A guia do pipeline implantado é aberta.

  3. Clique no pipeline implantado desejado para abri-lo no Pipeline Studio.

  4. Clique em Configurar > Pushdown de transformação.

    Ativar o push-down de transformação.

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

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

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

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

  8. Clique em Salvar.

Configurações opcionais

.
Propriedade Suporte a macros Versões compatíveis do Cloud Data Fusion Descrição
Usar conexão Não 6.7.0 e mais recente Define se uma conexão existente será usada.
Conexão Sim 6.7.0 e mais recente O nome da conexão. Essa conexão fornece informações sobre o projeto e a conta de serviço.
Opcional: use a função macro ${conn(connection_name)}.
ID do projeto do conjunto de dados Sim 6.5.0 Se o conjunto de dados estiver em um projeto diferente daquele Como executar o job do BigQuery, insira o ID do projeto do conjunto de dados. Se nenhum valor é fornecido, por padrão, ele usa o ID do projeto em que o é executado.
ID do projeto Sim 6.5.0 O ID do projeto do Google Cloud.
Tipo de conta de serviço Sim 6.5.0 Selecione uma das seguintes opções:
  • Caminho do arquivo: o caminho do arquivo da conta de serviço.
  • JSON: o conteúdo JSON da conta de serviço.
O padrão é JSON.
Caminho do arquivo da conta de serviço Sim 6.5.0 O caminho no sistema de arquivos local para a chave da conta de serviço usada para autorização. Ele é definido como auto-detect durante a execução em um cluster do Dataproc. Ao executar em outros clusters, o arquivo precisa estar presente em todos os nós do cluster. O padrão é auto-detect.
JSON da conta de serviço Sim 6.5.0 O conteúdo do arquivo JSON da conta de serviço.
Nome do bucket temporário Sim 6.5.0 O bucket do Cloud Storage que armazena os dados temporários. Ele é criado automaticamente, caso ainda não exista, mas não é excluídos automaticamente. Os dados do Cloud Storage são excluídos depois de carregados no BigQuery. Se esse valor não for fornecido, um o bucket exclusivo é criado e excluído após a execução do pipeline termina. A conta de serviço precisa ter permissão para criar buckets no projeto configurado.
Local Sim 6.5.0 O local onde o conjunto de dados do BigQuery é criado. Esse valor será ignorado se o conjunto de dados ou o bucket temporário já existe. O padrão é US multirregional.
Nome da chave de criptografia Sim 6.5.1/0.18.1 O chave de criptografia gerenciada pelo cliente (CMEK) que criptografa dados gravado em qualquer bucket, conjunto de dados ou tabela criado pelo plug-in. Se o bucket, o conjunto de dados ou a tabela já existir, esse valor será ignorado.
Reter tabelas do BigQuery após a conclusão Sim 6.5.0 Define se todas as tabelas temporárias do BigQuery devem ser mantidas criados durante a execução do pipeline para depuração e para fins de validação. O padrão é No.
TTL da tabela temporária (em horas) Sim 6.5.0 Defina o TTL da tabela para tabelas temporárias do BigQuery em horas. Isso é útil como uma medida de segurança caso o pipeline cancelado e o processo de limpeza é interrompido (por exemplo, se o cluster de execução é encerrado abruptamente). Definir esse valor como 0 desativa o TTL da tabela. O padrão é 72 (3 dias).
Prioridade de job Sim 6.5.0 A prioridade usada para executar jobs do BigQuery. Selecionar uma das seguintes opções:
  1. Lote: um job em lote é colocado na fila e iniciado como assim que os recursos inativos ficarem disponíveis, geralmente minutos. Se o job não for iniciado em três horas, a prioridade é trocada para interativa.
  2. Interativo: um job interativo é executado. assim que possível e é contabilizado no limite de taxa simultânea e a limitação de taxa diária.
O padrão é Batch.
Estágios para forçar o push-down Sim 6.7.0 Estágios compatíveis a serem sempre executados no BigQuery. Cada nome de cenário precisa estar em uma linha separada.
Etapas para pular o push-down Sim 6.7.0 Estágios compatíveis para nunca serem executados no BigQuery. Cada nome de estágio deve estar em uma linha separada.
Usar a API BigQuery Storage Read Sim 6.7.0 Indica se a API BigQuery Storage Read deve ser usada ao extrair registros do BigQuery durante a execução do pipeline. Esta opção pode melhorar o desempenho do pushdown de transformação, mas incorre custos adicionais. Isso requer que o Scala 2.12 seja instalado no ambiente de execução.

Monitorar as alterações no desempenho dos registros

Os registros do ambiente de execução do pipeline incluem mensagens que mostram as consultas do SQL executadas no BigQuery. É possível monitorar quais estágios do pipeline são enviados ao BigQuery.

O exemplo a seguir mostra as entradas de registro quando a execução do pipeline começa. O Os registros indicam que as operações JOIN no pipeline foram enviadas para baixo. 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 a seguir mostra os nomes de tabela que serão atribuídos a cada um os conjuntos de dados envolvidos na execução do push-down:

  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 registros mostram a conclusão dos estágios de push. a execução das operações JOIN. 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 todos os estágios forem concluídos, uma mensagem mostrará que a operação Pull foi ser concluída. Isso indica que o processo de exportação do BigQuery foi acionado, e os registros começarão a ser lidos no pipeline depois que esse job de exportação começa. 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, eles serão descritos nos registros.

Para detalhes sobre a execução das operações JOIN do BigQuery, como utilização de recursos, tempo de execução e causas de erros, é possível conferir os dados do job do BigQuery usando o ID do job, que aparece nos registros do job.

Analisar métricas de pipeline

Para mais informações sobre as métricas que o Cloud Data Fusion oferece para a parte do pipeline executada no BigQuery, consulte Métricas de pipeline de push do BigQuery.

A seguir