Transferências do Cloud Storage

Com o serviço de transferência de dados do BigQuery para o Cloud Storage, você programa carregamentos de dados recorrentes do Cloud Storage para o BigQuery.

Antes de começar

Antes de criar uma transferência do Cloud Storage:

Limitações

As transferências recorrentes do Cloud Storage para o BigQuery estão sujeitas às seguintes limitações:

  • Todos os arquivos que correspondem aos padrões definidos por um caractere curinga ou por parâmetros de ambiente de execução para a transferência precisam compartilhar o mesmo esquema definido para a tabela de destino. Caso contrário, a transferência falhará. Mudanças no esquema da tabela entre execuções também causam falha na transferência.
  • Os arquivos de origem no Cloud Storage precisam de pelo menos uma hora para serem incluídos na transferência.
  • Como os objetos do Cloud Storage podem ter controle de versão, é importante observar que os objetos arquivados do Cloud Storage não são compatíveis com transferências do BigQuery. Os objetos precisam estar ativos para serem transferidos.
  • Diferentemente de carregamentos de dados individuais do Cloud Storage para o BigQuery, para transferências contínuas, é preciso criar a tabela de destino e o esquema dela antes de configurar a transferência. O BigQuery não pode criar a tabela como parte do processo recorrente de transferência de dados.
  • As transferências do Cloud Storage sempre são acionadas com a preferência WRITE_APPEND, que acrescenta dados à tabela de destino. Consulte configuration.load.writeDisposition na configuração do job load para mais detalhes.
  • Se o local do conjunto de dados estiver definido com um valor diferente de US, o intervalo regional ou multirregional do Cloud Storage precisará estar na mesma região que o conjunto de dados.

Dependendo do formato dos dados de origem do Cloud Storage, pode haver outras limitações. Veja mais informações em:

Permissões exigidas

Ao carregar dados no BigQuery, você precisa de permissões para carregar dados em tabelas e partições novas ou existentes do BigQuery. Se você estiver carregando dados do Cloud Storage, também precisará acessar o intervalo que contém os dados. Verifique se você tem as permissões necessárias a seguir:

  • BigQuery: permissões bigquery.transfers.update são necessárias para criar a transferência programada. O papel predefinido do Cloud IAM bigquery.admin inclui as permissões bigquery.transfers.update. Para mais informações sobre os papéis do Cloud IAM no BigQuery, consulte Controle de acesso.
  • Cloud Storage: permissões storage.objects.get são necessárias no intervalo individual ou superior. Se você estiver usando um caractere curinga de URI, também precisará ter permissões storage.objects.list. Se você quiser excluir os arquivos de origem após cada transferência bem-sucedida, também precisará de permissões de storage.objects.delete. O papel do Cloud IAM predefinido storage.objectAdmin inclui todas essas permissões.

Configurar uma transferência do Cloud Storage

Para criar uma transferência do Cloud Storage no serviço de transferência de dados do BigQuery:

Console

  1. Acesse o Console do GCP.

    Acessar o Console do GCP

  2. Clique em Transferências.

  3. Clique em Criar.

  4. Na página Criar transferência:

    • Na seção Tipo de origem, em Origem, escolha Cloud Storage.

      Fonte da transferência

    • No campo Nome de exibição da seção Transferir nome da configuração, insira um nome para a transferência, como My Transfer. Esse nome pode ter qualquer valor que identifique facilmente a transferência, caso seja necessário modificá-la futuramente.

      Nome da transferência

    • Na seção Opções de programação, em Programação, use o valor padrão (Iniciar agora) ou clique em Iniciar em um horário definido.

      • Em Repetições, escolha uma opção para a frequência de execução da transferência:
        • Diário (padrão)
        • Semanalmente
        • Mensalmente
        • Personalizada
        • Sob demanda
      • Em Data e hora de início, insira a data e a hora para iniciar a transferência. Se você escolher Iniciar agora, essa opção ficará desativada.

        Programação de transferência

    • Na seção Configurações de destino, em Conjunto de dados de destino, escolha o conjunto criado para armazenar seus dados.

      Transferir conjunto de dados

    • Na seção Detalhes da fonte de dados:

      • Em Tabela de destino, digite o nome da tabela. Ela precisa seguir as regras de nomenclatura de tabela. O nome da tabela de destino também aceita parâmetros.
      • Em URI do Cloud Storage, digite o URI do Cloud Storage. Caracteres curinga e parâmetros são aceitos.
      • Marque a caixa Excluir os arquivos de origem após a transferência se quiser excluir os arquivos de origem após cada transferência bem-sucedida. Os jobs de exclusão trabalham com base no melhor esforço. Eles não tentarão novamente se o primeiro esforço para excluir os arquivos de origem falhar.
      • Na seção Opções de transferência:

        • Em Todos os formatos:
          • Em Número de erros permitidos, digite o número máximo de registros corrompidos que o BigQuery pode ignorar ao executar o job. Se o número de registros corrompidos exceder esse valor, o erro “inválido” será retornado no resultado do job, e ele falhará. O valor padrão é 0.
        • Em JSON, CSV:
          • Marque a caixa Ignorar valores desconhecidos se quiser que a transferência elimine dados que não se ajustem ao esquema da tabela de destino.
        • Em CSV:

          • Em Delimitador de campo, insira o caractere que separa os campos. O valor padrão é uma vírgula.
          • Em Linhas de cabeçalho a serem ignoradas, digite o número de linhas de cabeçalho nos arquivos de origem, se você não quiser importá-las. O valor padrão é 0.
          • Marque a caixa Permitir novas linhas entre aspas se quiser permitir novas linhas dentro dos campos entre aspas.
          • Marque a caixa Permitir linhas dentadas se quiser permitir a transferência de linhas com colunas NULLABLE ausentes.

      Detalhes da origem do Cloud Storage

    • (Opcional) Na seção Opções de notificação:

      • Clique no botão para ativar as notificações por e-mail. Quando você ativa essa opção, o administrador de transferência recebe uma notificação por e-mail se uma execução de transferência falha.
      • Em Selecionar um tópico do Cloud Pub/Sub, escolha o nome do seu tópico ou clique em Criar um tópico. Essa opção configura notificações de execução do Cloud Pub/Sub para sua transferência. As notificações de execução de transferência estão na versão Alfa.
  5. Clique em Salvar.

IU clássica

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Transferências.

  3. Clique em Adicionar transferência.

  4. Na página Nova transferência:

    • Para Origem, escolha Cloud Storage.
    • Em Nome de exibição, digite um nome para a transferência, como My Transfer. Esse nome pode ter qualquer valor que identifique facilmente o processo, caso seja necessário modificá-lo no futuro.
    • (Opcional) Em Programação, deixe o valor padrão Diária (a cada 24 horas, com base na hora da criação) ou clique em Editar para alterar a hora. Também é possível alterar o intervalo para "Semanal", "Mensal" ou "Personalizada". Se você selecionar "Personalizada", especifique um horário em estilo "Cron", como every 12 hours. O período mais curto permitido é de 12 horas. Veja o campo schedule em TransferConfig para saber outros valores de API válidos.

      programação de transferência

    • Em Conjunto de dados de destino, escolha o conjunto de dados apropriado.

    • Em Tabela de destino, digite o nome da tabela. Ela precisa seguir as regras de nomenclatura de tabela. O nome da tabela de destino também aceita parâmetros.

    • Em URI do Cloud Storage, digite o URI do Cloud Storage. Caracteres curinga e parâmetros são aceitos.

    • Marque a caixa Excluir os arquivos de origem após a transferência se quiser excluir os arquivos de origem após cada transferência bem-sucedida. Os jobs de exclusão trabalham com base no melhor esforço. Eles não tentarão novamente se o primeiro esforço para excluir os arquivos de origem falhar.

    • Em Formato do arquivo, selecione o tipo de arquivo que você quer transferir.

    • Na seção Opções de transferência - Todos os formatos, siga estas etapas:

      • Em Número de erros permitidos, digite o número máximo de registros corrompidos que o BigQuery pode ignorar ao executar o job. Se o número de registros corrompidos exceder esse valor, o erro “inválido” será retornado no resultado do job, e ele falhará. O valor padrão é 0.
    • Na seção Opções de transferência - JSON, CSV:

      • Marque a caixa Ignorar valores desconhecidos se quiser que a transferência elimine dados que não se ajustem ao esquema da tabela de destino.
    • Na seção Opções de transferência - CSV:

      • Em Delimitador de campo, insira o caractere que separa os campos. O valor padrão é uma vírgula.
      • Em Linhas de cabeçalho a serem ignoradas, digite o número de linhas de cabeçalho nos arquivos de origem, se você não quiser importá-las. O valor padrão é 0.
      • Marque a caixa Permitir novas linhas entre aspas se quiser permitir novas linhas dentro dos campos entre aspas.
      • Marque a caixa Permitir linhas dentadas se quiser permitir a transferência de linhas com colunas NULLABLE ausentes.

      Nova transferência do Cloud Storage

    • (Opcional) Expanda a seção Avançado e configure as notificações de execução da transferência. As notificações de execução de transferência estão na versão Alfa.

    • Em Tópico do Cloud Pub/Sub, digite o nome do tópico. Por exemplo, projects/myproject/topics/mytopic.

    • Marque Enviar notificações por e-mail para permitir notificações por e-mail sobre falhas na execução da transferência.

      Tópico do Cloud Pub/Sub

  5. Clique em Adicionar.

CLI

Insira o comando bq mk e forneça a sinalização de execução da transferência --transfer_config. As sinalizações abaixo também são obrigatórias:

  • --data_source
  • --display_name
  • --target_dataset
  • --params
bq mk \
--transfer_config \
--project_id=project_id \
--data_source=data_source \
--display_name=name \
--target_dataset=dataset \
--params='parameters'

Em que:

  • project_id é o ID do projeto. Se --project_id não for fornecido para especificar um projeto específico, o projeto padrão será usado.
  • data_source é a fonte de dados: google_cloud_storage.
  • name é o nome de exibição da configuração da transferência. Esse nome pode ser qualquer valor que identifique facilmente a transferência, caso seja necessário modificá-la futuramente.
  • dataset é o conjunto de dados de destino na configuração da transferência;
  • parameters contém os parâmetros da configuração da transferência criada no formato JSON. Por exemplo: --params='{"param":"param_value"}'.
    • Para o Cloud Storage, é preciso fornecer os parâmetros data_path_template, destination_table_name_template e file_format. data_path_template é o URI do Cloud Storage que contém seus arquivos a serem transferidos, que podem incluir um caractere curinga. destination_table_name_template é o nome da sua tabela de destino. Em file_format, indique o tipo de arquivo que você quer transferir: CSV, JSON, AVRO, PARQUET ou ORC. O valor padrão é CSV.
    • Para todos os valores de file_format, você pode incluir o parâmetro opcional max_bad_records. O valor padrão é 0.
    • Para os valores JSON ou CSV em file_format, é possível incluir o parâmetro opcional ignore_unknown_values. Este parâmetro será ignorado se você não selecionou CSV ou JSON para file_format.
    • Para CSV file_format, você pode incluir o parâmetro opcional field_delimiter para o caractere que separa os campos. O valor padrão é uma vírgula. Este parâmetro será ignorado se você não tiver selecionado CSV para file_format.
    • Para CSV file_format, você pode incluir o parâmetro opcional skip_leading_rows para indicar as linhas do cabeçalho que não quer importar. O valor padrão é 0. Este parâmetro será ignorado se você não tiver selecionado CSV para file_format.
    • Para CSV file_format, você pode incluir o parâmetro opcional allow_quoted_newlines se quiser permitir novas linhas dentro dos campos entre aspas. Este parâmetro será ignorado se você não tiver selecionado CSV para file_format.
    • Para CSV file_format, você pode incluir o parâmetro opcional allow_jagged_rows se quiser aceitar linhas em que as colunas opcionais à direita estão ausentes. Os valores ausentes serão preenchidos com NULLs. Este parâmetro será ignorado se você não tiver selecionado CSV para file_format.
    • O parâmetro opcional delete_source_files excluirá os arquivos de origem após cada transferência bem-sucedida. Os jobs de exclusão não farão uma nova tentativa se o primeiro esforço para excluir os arquivos de origem falhar. O valor padrão para delete_source_files é falso.

Por exemplo, o comando a seguir cria uma transferência do Cloud Storage chamada My Transfer usando o valor data_path_template de gs://mybucket/myfile/*.csv, o conjunto de dados de destino mydataset e file_format CSV. Este exemplo inclui valores não padrão para os parâmetros opcionais associados ao CSV file_format.

A transferência é criada no projeto padrão:

bq mk --transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"data_path_template":"gs://mybucket/myfile/*.csv",
"destination_table_name_template":"MyTable",
"file_format":"CSV",
"max_bad_records":"1",
"ignore_unknown_values":"true",
"field_delimiter":"|",
"skip_leading_rows":"1",
"allow_quoted_newlines":"true",
"allow_jagged_rows":"false",
"delete_source_files":"true"}' \
--data_source=google_cloud_storage

Após executar o comando, você recebe uma mensagem semelhante a esta:

[URL omitted] Please copy and paste the above URL into your web browser and follow the instructions to retrieve an authentication code.

Siga as instruções e cole o código de autenticação na linha de comando.

API

Use o método projects.locations.transferConfigs.create e forneça uma instância do recurso TransferConfig.

Como configurar uma execução de atualização de uma transferência

Além de configurar uma transferência recorrente do Cloud Storage, também é possível configurar uma execução de atualização para coletar arquivos de outros dados.

Se a configuração da transferência estiver relacionada à data (parametrizada), o URI do Cloud Storage for parametrizado ou ambos, será possível executar a atualização em datas específicas.

Para configurar uma transferência de atualização:

Console

  1. Abra o Console do GCP.

    Acessar o Console do GCP

  2. Clique em Transferências.

  3. Clique na sua transferência.

  4. Clique no menu Mais e selecione Atualizar transferência.

  5. Na caixa de diálogo Programe um preenchimento, escolha sua data de início e data de término. Você pode usar a IU da Web do BigQuery para definir limites de tempo mais precisos.

    Definir datas de atualização

IU clássica

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Transferências.

  3. Clique na sua transferência.

  4. Clique em Transferência de atualização.

    Atualizar transferência

  5. Na caixa de diálogo Iniciar execuções de transferência, escolha o Horário de início e o Horário de término.

    Definir datas de atualização

    Se sua configuração de transferência do Cloud Storage não for parametrizada, você não receberá opções de data ao clicar em Atualizar transferência. Em vez disso, a atualização acontecerá imediatamente.

    Atualizar imediatamente

  6. Clique em OK.

A seguir