Executar transformações no BigQuery

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

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 push-down da transformação.

Antes de começar

O Pushdown para 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.

Ative o push-down de transformação no seu pipeline

Console

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

  1. Acesse a página Instâncias e clique em Visualizar instância.

    Acesse "Instâncias"

    A instância é aberta na IU do Cloud Data Fusion.

  2. Clique em Menu > Lista.

    A guia do pipeline implantado é aberta.

  3. Clique no pipeline implantado que você quer abrir no Pipeline Studio.

  4. Clique em Configurar > Pushdown no Transformation.

    Ativar o Pushdown para transformação.

  5. Clique em Ativar push-down 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 saber mais, consulte Conjuntos de dados.

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

  8. Clique em Save.

Configurações opcionais

.
Propriedade Compatível com macros Versões compatíveis do Cloud Data Fusion Descrição
Usar conexão No 6.7.0 e posteriores Indica se uma conexão existente será usada.
Conexão Yes 6.7.0 e posteriores O nome da conexão. Essa conexão fornece informações de conta de serviço e projeto.
Opcional: use a macro ${conn(connection_name)}.
ID do projeto do conjunto de dados Yes 6,5,0 Se o conjunto de dados estiver em um projeto diferente daquele em que o job do BigQuery é executado, insira o ID do projeto do conjunto de dados. Se nenhum valor for fornecido, por padrão, usará o ID do projeto em que o job será executado.
ID do projeto Yes 6,5,0 O ID do projeto do Google Cloud.
Tipo de conta de serviço Yes 6,5,0 Selecione uma destas opções:
  • Caminho do arquivo: o caminho do arquivo para a 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 Yes 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 ser executado 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 Yes 6,5,0 O conteúdo do arquivo JSON da conta de serviço.
Nome temporário do bucket Yes 6,5,0 O bucket do Cloud Storage que armazena os dados temporários. Ele será criado automaticamente se não existir, mas não será excluído automaticamente. Os dados do Cloud Storage são excluídos depois de carregados no BigQuery. Se esse valor não for fornecido, um bucket exclusivo será criado e excluído após a conclusão da execução do pipeline. A conta de serviço precisa ter permissão para criar buckets no projeto configurado.
Local Yes 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á existir. O padrão é a multirregião US.
Nome da chave de criptografia Yes 6.5.1/0.18.1 A chave de criptografia gerenciada pelo cliente (CMEK) que criptografa dados gravados em qualquer bucket, conjunto de dados ou tabela criada 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 Yes 6,5,0 Indica se todas as tabelas temporárias do BigQuery criadas durante a execução do pipeline serão retidas para fins de depuração e validação. O padrão é Não.
TTL temporária da tabela (em horas) Yes 6,5,0 Defina o TTL da tabela para tabelas temporárias do BigQuery em horas. Isso será útil como uma proteção contra falhas se o pipeline for cancelado e o processo de limpeza for interrompido (por exemplo, se o cluster de execução for encerrado abruptamente). Definir este valor como 0 desativa o TTL da tabela. O padrão é 72 (três dias).
Prioridade do job Yes 6,5,0 A prioridade usada para executar jobs do BigQuery. Selecione uma das seguintes opções:
  1. Batch: um job em lote é colocado em fila e iniciado assim que os recursos inativos ficam disponíveis, geralmente em alguns minutos. Se o job não for iniciado em três horas, a prioridade dele será alterada para interativa.
  2. Interativo: um job interativo é executado assim que possível e é contabilizado no limite de taxa simultânea e na taxa diária.
O padrão é Batch.
Estágios para forçar push-down Yes 6.7.0 Estágios compatíveis para sempre serem executados no BigQuery. Cada nome de estágio precisa estar em uma linha separada.
Etapas para pular o pushdown Yes 6.7.0 Estágios compatíveis que nunca serão executados no BigQuery. Cada nome de estágio precisa estar em uma linha separada.
Usar a API BigQuery Storage Read Yes 6.7.0 Indica se a API BigQuery Storage Read deve ser usada ao extrair registros do BigQuery durante a execução do pipeline. Essa opção pode melhorar o desempenho do Pushdown de transformação, mas gera custos extras. Para isso, é preciso instalar o Scala 2.12 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.

No exemplo a seguir, mostramos as entradas de registro quando a execução do pipeline começa. Os registros indicam que as operações JOIN no pipeline foram enviadas ao 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'

No exemplo a seguir, mostramos os nomes das tabelas que serão atribuídos a cada um dos conjuntos de dados envolvidos na execução do 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>

Conforme a execução continua, os registros mostram a conclusão dos estágios de push e, por fim, a execução de 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 vai mostrar que a operação Pull foi concluída. Isso indica que o processo de exportação do BigQuery foi acionado e que os registros começarão a ser lidos no pipeline depois do início do job de exportação. 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 visualizar os dados do job do BigQuery usando o ID do job, que aparece nos registros do job.

Revise as métricas do pipeline

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

A seguir