Como trabalhar com transferências

Depois de criar uma transferência usando o serviço de transferência de dados do BigQuery, é possível:

  • conseguir informações sobre uma configuração de transferência;
  • listar configurações de transferência;
  • ver o histórico de execução de uma transferência;
  • ver detalhes de execução de transferência, como mensagens de registro;
  • atualizar uma transferência;
  • configurar um preenchimento;
  • atualizar credenciais;
  • desativar uma transferência;
  • excluir uma transferência.

Como receber informações sobre transferências

Depois de criar uma transferência, você pode conseguir informações sobre a configuração dela. A configuração inclui os valores que você forneceu quando criou a transferência.

Permissões necessárias

Para informações sobre uma transferência, as permissões bigquery.transfers.get são necessárias. Os seguintes papéis predefinidos do IAM incluem as permissões bigquery.transfers.get:

  • bigquery.admin
  • bigquery.user

Um usuário que tenha as permissões bigquery.transfers.get pode ver informações de todas as transferências em um projeto.

Para mais informações sobre os papéis do IAM no serviço de transferência de dados do BigQuery, consulte a Referência de controle de acesso.

Como receber informações sobre uma transferência

Para informações sobre uma configuração de transferência:

Console

  1. No Console do Cloud, acesse a página do BigQuery.

    Acessar a página do BigQuery

  2. Clique em Transferências.

  3. Na página Transferências, clique em uma transferência apropriada na lista.

  4. Clique em CONFIGURAÇÃO para a transferência selecionada.

  5. Os detalhes da configuração da transferência e da fonte de dados serão exibidos. No exemplo a seguir, mostramos as propriedades de configuração de uma migração do Teradata.

    Configuração da transferência no console

bq

Digite o comando bq show e insira o nome do recurso da configuração da transferência. A sinalização --format pode ser usada para controlar o formato da saída.

bq show \
--format=prettyjson \
--transfer_config resource_name

Em que:

Por exemplo, insira o comando a seguir para exibir a configuração da transferência projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7.

bq show \
--format=prettyjson \
--transfer_config projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

Use o método projects.locations.transferConfigs.get e forneça a configuração da transferência por meio do parâmetro name.

Java

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.GetTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import java.io.IOException;

// Sample to get config info.
public class GetTransferConfigInfo {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    // i.e projects/{project_id}/transferConfigs/{config_id}` or
    // `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}`
    getTransferConfigInfo(configId);
  }

  public static void getTransferConfigInfo(String configId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      GetTransferConfigRequest request =
          GetTransferConfigRequest.newBuilder().setName(configId).build();
      TransferConfig info = dataTransferServiceClient.getTransferConfig(request);
      System.out.print("Config info retrieved successfully." + info.getName() + "\n");
    } catch (ApiException ex) {
      System.out.print("config not found." + ex.toString());
    }
  }
}

Como listar configurações de transferência

Permissões necessárias

Para listar todas as transferências ou configurações de transferência em um projeto, é necessária a permissão bigquery.transfers.get. Os seguintes papéis predefinidos do IAM incluem as permissões bigquery.transfers.get:

  • bigquery.admin
  • bigquery.user

Um usuário com as permissões bigquery.transfers.get pode listar todas as transferências em um projeto.

Para mais informações sobre os papéis do IAM no serviço de transferência de dados do BigQuery, consulte a Referência de controle de acesso.

Como listar transferências

Para listar as configurações de transferência em um projeto:

Console

  1. No Console do Cloud, acesse a página do BigQuery.

    Acessar a página do BigQuery

  2. Clique em Transferências.

  3. Se houver configurações de transferência no projeto, uma lista delas será exibida na página Transferências.

bq

Para listar todas as configurações de transferência de um projeto por local, insira o comando bq ls e forneça as sinalizações --transfer_location e --transfer_config. Também é possível fornecer a sinalização --project_id para especificar um projeto determinado. Se --project_id não for especificado, o projeto padrão será usado. A sinalização --format pode ser usada para controlar o formato da saída.

Para listar configurações de transferência de fontes de dados específicas, forneça a sinalização --filter.

Para ver um número específico de configurações de transferência no formato paginado, forneça a sinalização --max_results para determinar o número de transferências. O comando retorna um token de página que você fornece usando a sinalização --page_token para ver as próximas N configurações.

bq ls \
--transfer_config \
--transfer_location=location \
--project_id=project_id \
--max_results=integer \
--filter=dataSourceIds:data_sources

Em que:

Exemplos:

Insira o comando a seguir para exibir todas as configurações de transferência nos EUA do projeto padrão. A saída é controlada com o uso da sinalização --format.

bq ls \
--format=prettyjson \
--transfer_config \
--transfer_location=us

Insira o comando a seguir para exibir todas as configurações de transferência nos EUA para o ID do projeto myproject.

bq ls \
--transfer_config \
--transfer_location=us \
--project_id=myproject

Insira o comando a seguir para listar as três configurações de transferência mais recentes.

bq ls \
--transfer_config \
--transfer_location=us \
--project_id=myproject \
--max_results=3

O comando retorna o token da próxima página. Copie o token da página e forneça-o no comando bq ls para ver os próximos três resultados.

bq ls \
--transfer_config \
--transfer_location=us \
--project_id=myproject \
--max_results=3 \
--page_token=AB1CdEfg_hIJKL

Insira o comando a seguir para listar as configurações de transferência do Ads e Campaign Manager para o ID do projeto myproject.

bq ls \
--transfer_config \
--transfer_location=us \
--project_id=myproject \
--filter=dataSourceIds:dcm_dt,adwords

API

Use o método projects.locations.transferConfigs.list e insira o ID do projeto por meio do parâmetro parent.

Java

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ListTransferConfigsRequest;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import java.io.IOException;

// Sample to get list of transfer config
public class ListTransferConfigs {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String projectId = "MY_PROJECT_ID";
    listTransferConfigs(projectId);
  }

  public static void listTransferConfigs(String projectId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      ListTransferConfigsRequest request =
          ListTransferConfigsRequest.newBuilder().setParent(parent.toString()).build();
      dataTransferServiceClient
          .listTransferConfigs(request)
          .iterateAll()
          .forEach(config -> System.out.print("Success! Config ID :" + config.getName() + "\n"));
    } catch (ApiException ex) {
      System.out.println("Config list not found due to error." + ex.toString());
    }
  }
}

Python

from google.cloud import bigquery_datatransfer

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

project_id = "my-project"
parent = transfer_client.common_project_path(project_id)

configs = transfer_client.list_transfer_configs(parent=parent)
print("Got the following configs:")
for config in configs:
    print(f"\tID: {config.name}, Schedule: {config.schedule}")

Como ver o histórico de execução

À medida que as transferências programadas são executadas, um histórico de execução é mantido para cada configuração de transferência que inclui tanto execuções de transferência bem-sucedidas quanto que apresentam falha. As execuções de transferência com mais de 90 dias são excluídas automaticamente do histórico de execução.

Permissões necessárias

Para ver o histórico de execução de uma configuração de transferência, as permissões bigquery.transfers.get são necessárias. Os papéis predefinidos bigquery.user e bigquery.admin do IAM incluem permissões bigquery.transfers.get.

Para mais informações sobre os papéis do IAM no serviço de transferência de dados do BigQuery, consulte a Referência de controle de acesso.

Como ver um histórico de execução

Para ver o histórico de execução de uma configuração de transferência:

Console

  1. No Console do Cloud, acesse a página do BigQuery.

    Acessar a página do BigQuery

  2. Clique em Transferências.

  3. Na página Transferências, clique em uma transferência apropriada na lista.

  4. Você estará na página EXECUTAR HISTÓRICO da transferência selecionada.

bq

Para listar as execuções de transferência de uma configuração específica, digite o comando bq ls e insira a sinalização --transfer_run. Também é possível inserir a sinalização --project_id para especificar um projeto determinado. Se resource_name não contiver informações do projeto, o valor --project_id será usado. Se --project_id não for especificado, o projeto padrão será usado. A sinalização --format pode ser usada para controlar o formato da saída.

Para visualizar um número específico de execuções de transferência, forneça a sinalização --max_results. O comando retorna um token de página que você fornece usando a sinalização --page_token para ver as próximas N configurações.

Para listar execuções de transferência com base no estado delas, forneça a sinalização --filter.

bq ls \
--transfer_run \
--max_results=integer \
--transfer_location=location \
--project_id=project_id \
--filter=states:state, ... \
resource_name

Em que:

  • integer é o número de resultados que serão retornados;
  • location é o local das configurações de transferência. O local é especificado quando você cria uma transferência;
  • project_id é o ID do projeto;
  • state, ... é uma das listas a seguir ou uma lista separada por vírgulas:
    • SUCCEEDED
    • FAILED
    • PENDING
    • RUNNING
    • CANCELLED
  • resource_name é o nome do recurso da transferência, também conhecido como configuração da transferência. Se você não souber esse nome, execute o comando bq ls --transfer_config --transfer_location=location para listar todas as transferências.

Por exemplo:

Insira o comando a seguir para exibir as três execuções mais recentes da configuração de transferência projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7. A saída é controlada com o uso da sinalização --format.

bq ls \
--format=prettyjson \
--transfer_run \
--max_results=3 \
--transfer_location=us \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

O comando retorna o token da próxima página. Copie o token da página e forneça-o no comando bq ls para ver os próximos três resultados.

bq ls \
--format=prettyjson \
--transfer_run \
--max_results=3 \
--page_token=AB1CdEfg_hIJKL \
--transfer_location=us \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

Insira o comando a seguir para exibir todas as execuções com falha na configuração de transferência projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7.

bq ls \
--format=prettyjson \
--transfer_run \
--filter=states:FAILED \
--transfer_location=us \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

Use o método projects.locations.transferConfigs.runs.list e especifique o ID do projeto por meio do parâmetro parent.

Java

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ListTransferRunsRequest;
import java.io.IOException;

// Sample to get run history from transfer config.
public class RunHistory {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    // i.e projects/{project_id}/transferConfigs/{config_id}` or
    // `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}`
    runHistory(configId);
  }

  public static void runHistory(String configId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ListTransferRunsRequest request =
          ListTransferRunsRequest.newBuilder().setParent(configId).build();
      dataTransferServiceClient
          .listTransferRuns(request)
          .iterateAll()
          .forEach(run -> System.out.print("Success! Run ID :" + run.getName() + "\n"));
    } catch (ApiException ex) {
      System.out.println("Run history not found due to error." + ex.toString());
    }
  }
}

Como ver detalhes da execução de transferências e registros de mensagens

Quando uma execução de transferência aparece no histórico de execução, você pode ver os detalhes de execução, incluindo mensagens de registro, advertências e erros, o nome da execução e a hora de início e término.

Permissões necessárias

Para ver os detalhes da execução da transferência, as permissões bigquery.transfers.get são necessárias. Os papéis predefinidos do IAM bigquery.user e bigquery.admin incluem as permissões bigquery.transfers.get.

Para mais informações sobre os papéis do IAM no serviço de transferência de dados do BigQuery, consulte a Referência de controle de acesso.

Além disso, a visualização de mensagens de registro por meio do Console do Cloud requer permissões para visualizar os dados do Cloud Logging, o papel de visualizador de registros (roles/logging.viewer) concede acesso somente leitura a todos os recursos do Logging. Para mais informações sobre as permissões do IAM e os papéis que se aplicam aos dados de registros do Cloud, consulte o Guia de controle de acesso do Cloud Logging.

Como ver detalhes de uma execução de transferência

Para ver detalhes da execução da transferência:

Console

  1. No Console do Cloud, acesse a página do BigQuery.

    Acessar a página do BigQuery

  2. Clique em Transferências.

  3. Na página Transferências, clique em uma transferência apropriada na lista.

  4. Você estará na página EXECUTAR HISTÓRICO da transferência selecionada.

  5. Clique em uma execução individual da transferência, e o painel Detalhes da execução será aberto para essa execução da transferência.

  6. Em Detalhes da execução, observe se há mensagens de erro. Essa informação será necessária se você entrar em contato com o suporte do Google Cloud. Os detalhes da execução também incluem mensagens de registro e avisos.

    Detalhes da execução no console

bq

Para ver os detalhes da execução de transferência, digite o comando bq show e insira o nome da execução da transferência usando a sinalização --transfer_run. A sinalização --format pode ser usada para controlar o formato da saída.

bq show \
--format=prettyjson \
--transfer_run run_name

Em que:

  • run_name é o nome da execução de transferência. Use o comando bq ls para recuperar o nome da execução.

Por exemplo:

Insira o comando a seguir para exibir os detalhes da execução de transferência projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g.

bq show \
--format=prettyjson \
--transfer_run \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g

Para ver as mensagens do registro de transferência de uma execução, insira o comando bq ls com a sinalização --transfer_log. Use a sinalização --message_type para filtrar mensagens de registro por tipo.

Para ver um determinado número de mensagens de registro, forneça a sinalização --max_results. O comando retorna um token de página que você fornece usando a sinalização --page_token para ver as próximas N mensagens.

bq ls \
--transfer_log \
--max_results=integer \
--message_type=messageTypes:message_type \
run_name

Em que:

  • integer é o número de mensagens de registro que serão retornadas;
  • message_type é o tipo de mensagem de registro para visualizar (um valor único ou uma lista separada por vírgulas):
    • INFO
    • WARNING
    • ERROR
  • run_name é o nome da execução de transferência. É possível recuperá-lo usando o comando bq ls.

Por exemplo:

Insira o comando a seguir para visualizar as duas primeiras mensagens de registro da execução de transferência projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g.

bq ls \
--transfer_log \
--max_results=2 \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g

O comando retorna o token da próxima página. Copie o token da página e forneça-o no comando bq ls para ver os próximos dois resultados.

bq ls \
--transfer_log \
--max_results=2 \
--page_token=AB1CdEfg_hIJKL \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g

Insira o comando a seguir para visualizar somente mensagens de erro da execução de transferência projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g.

bq ls \
--transfer_log \
--message_type=messageTypes:ERROR \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g

API

Use o método projects.transferConfigs.runs.transferLogs.list e forneça o nome da execução de transferência por meio do parâmetro parent.

Java

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.GetTransferRunRequest;
import com.google.cloud.bigquery.datatransfer.v1.TransferRun;
import java.io.IOException;

// Sample to get run details from transfer config.
public class RunDetails {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // runId examples:
    // `projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}` or
    // `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}/runs/{run_id}`
    String runId = "MY_RUN_ID";
    runDetails(runId);
  }

  public static void runDetails(String runId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      GetTransferRunRequest request = GetTransferRunRequest.newBuilder().setName(runId).build();
      TransferRun run = dataTransferServiceClient.getTransferRun(request);
      System.out.print("Run details retrieved successfully :" + run.getName() + "\n");
    } catch (ApiException ex) {
      System.out.print("Run details not found." + ex.toString());
    }
  }
}

Como atualizar uma transferência

Depois de adicionar a transferência, você pode editá-la. É possível editar qualquer um dos campos preenchidos durante a criação da transferência, exceto Fonte:

  • conjunto de dados de destino
  • nome de exibição
  • qualquer um dos parâmetros especificados para o tipo de transferência específico
  • executar configurações de notificação

Permissões necessárias

Para atualizar uma transferência, as permissões bigquery.transfers.update são necessárias. O papel predefinido bigquery.admin do IAM inclui as permissões bigquery.transfers.update.

Para mais informações sobre os papéis do IAM no serviço de transferência de dados do BigQuery, consulte a Referência de controle de acesso.

Como atualizar uma transferência

Para atualizar uma transferência, siga estas etapas:

Console

  1. No Console do Cloud, acesse a página do BigQuery.

    Acessar a página do BigQuery

  2. Clique em Transferências.

  3. Na página Transferências, clique em uma transferência apropriada na lista.

  4. Clique em EDITAR para atualizar a configuração da transferência.

bq

Digite o comando bq update, insira o nome do recurso da configuração de transferência por meio da sinalização --transfer_config e especifique as sinalizações --display_name, --target_dataset, --refresh_window_days ou --params.

bq update \
--display_name='name' \
--target_dataset=dataset \
--params='parameters' \
--refresh_window_days=integer \
--transfer_config \
resource_name

Em que:

  • name é o nome de exibição da configuração de transferência;
  • dataset é o conjunto de dados de destino na configuração da transferência;
  • parameters contém os parâmetros da configuração de transferência no formato JSON. Por exemplo: --params='{"param":"param_value"}'. Os parâmetros a seguir podem ser editados:
    • Google Ads: customer_id
    • Campaign Manager: bucket e network_id
    • Google Ad Manager: bucket e network_code
    • Google Merchant Center: merchant_id
    • Google Play: bucket e table_suffix
    • Search Ads 360: agency_id, advertiser_id, include_removed_entities, table_filter e custom_floodlight_variables
    • Canal do YouTube: table_suffix
    • Proprietário do conteúdo do YouTube: content_owner_id e table_suffix
  • integer é um valor de 0 a 30. Para informações sobre como configurar a janela de atualização, consulte a documentação do seu tipo de transferência.
  • resource_name é o nome do recurso da transferência, também conhecido como configuração da transferência. Se você não souber esse nome, execute o comando bq ls --transfer_config --transfer_location=location para listar todas as transferências.

Por exemplo:

Insira o comando a seguir para atualizar o nome de exibição, o conjunto de dados de destino, o período de atualização e os parâmetros da transferência projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7 do Google Ads.

bq update \
--display_name='My changed transfer' \
--target_dataset=mydataset2 \
--params='{"customer_id":"123-123-5678"}' \
--refresh_window_days=3 \
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

Use o método projects.transferConfigs.patch e forneça o nome do recurso da transferência por meio do parâmetro transferConfig.name. Se você não souber o nome do recurso da transferência, emita o comando bq ls --transfer_config --transfer_location=location para listar todas as transferências ou chame o método projects.locations.transferConfigs.list e forneça o ID do projeto por meio do parâmetro parent.

Java

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.cloud.bigquery.datatransfer.v1.UpdateTransferConfigRequest;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to update transfer config.
public class UpdateTransferConfig {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setName(configId)
            .setDisplayName("UPDATED_DISPLAY_NAME")
            .build();
    FieldMask updateMask = FieldMaskUtil.fromString("display_name");
    updateTransferConfig(transferConfig, updateMask);
  }

  public static void updateTransferConfig(TransferConfig transferConfig, FieldMask updateMask)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      UpdateTransferConfigRequest request =
          UpdateTransferConfigRequest.newBuilder()
              .setTransferConfig(transferConfig)
              .setUpdateMask(updateMask)
              .build();
      TransferConfig updateConfig = dataTransferServiceClient.updateTransferConfig(request);
      System.out.println("Transfer config updated successfully :" + updateConfig.getDisplayName());
    } catch (ApiException ex) {
      System.out.print("Transfer config was not updated." + ex.toString());
    }
  }
}

Python

from google.cloud import bigquery_datatransfer
from google.protobuf import field_mask_pb2

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

transfer_config_name = "projects/1234/locations/us/transferConfigs/abcd"
new_display_name = "My Transfer Config"

transfer_config = bigquery_datatransfer.TransferConfig(name=transfer_config_name)
transfer_config.display_name = new_display_name

transfer_config = transfer_client.update_transfer_config(
    {
        "transfer_config": transfer_config,
        "update_mask": field_mask_pb2.FieldMask(paths=["display_name"]),
    }
)

print(f"Updated config: '{transfer_config.name}'")
print(f"New display name: '{transfer_config.display_name}'")

Como configurar preenchimentos e execuções de atualização

Atualizar

Os preenchimentos não estão disponíveis para esses tipos de transferência. No entanto, é possível configurar uma atualização.

Preencher

É possível iniciar os preenchimentos de dados manualmente a qualquer momento. Além dos limites de origem, o serviço de transferência de dados do BigQuery aceita até 180 dias por solicitação de preenchimento. As solicitações simultâneas de preenchimento não são compatíveis.

Para informações sobre a quantidade de dados disponíveis para preenchimento, consulte a documentação da fonte de dados:

  • Campaign Manager
  • Google Ad Manager
  • Google Ads
    • Quando você configura um preenchimento do Google Ads, os snapshots das tabelas de correspondência são criados uma vez por dia e armazenados na partição da última data de execução. Quando você programa um preenchimento, os snapshots da tabela de correspondências das tabelas a seguir NÃO são atualizados:
      • Ad
      • AdGroup
      • AgeRange
      • Audience
      • BidGoal
      • Budget
      • Campaign
      • Criteria
      • Customer
      • Gender
      • Keyword
      • LocationBasedCampaignCriterion
      • ParentalStatus
      • Placement
      • Vídeo
  • Google Merchant Center (Beta)
  • Google Play
  • Search Ads 360
    • Quando você configura um preenchimento do Search Ads 360, os snapshots das tabelas de correspondência são criados uma vez por dia e armazenados na partição da última data de execução. Quando você programa um preenchimento, os snapshots da tabela de correspondências das tabelas a seguir NÃO são atualizados:
      • Account
      • Ad
      • Advertiser
      • AdGroup
      • AdGroupTarget
      • BidStrategy
      • Campaign
      • CampaignTarget
      • FeedItem
      • FloodlightActivity
      • Keyword
      • NegativeAdGroupKeyword
      • NegativeAdGroupTarget
      • NegativeCampaignKeyword
      • NegativeCampaignTarget
      • ProductAdvertised
      • ProductGroup
      • ProductLeadAndCrossSellFloodlightStats
      • Video
      • Placement
      • Vídeo
  • Relatórios de canal do YouTube
  • Relatórios do proprietário do conteúdo do YouTube

Os preenchimentos não estão disponíveis para transferências do Cloud Storage. No entanto, é possível configurar uma execução de atualização de uma transferência do Cloud Storage.

Permissões necessárias

Para programar um preenchimento, as permissões bigquery.transfers.update são necessárias. O papel predefinido bigquery.admin do IAM inclui as permissões bigquery.transfers.update.

Para mais informações sobre os papéis do IAM no serviço de transferência de dados do BigQuery, consulte a Referência de controle de acesso.

Como programar um preenchimento

Para programar um preenchimento:

Console

  1. No Console do Cloud, acesse a página do BigQuery.

    Acessar a página do BigQuery

  2. Clique em Transferências.

  3. Na página Transferências, clique em uma transferência apropriada na lista.

  4. Clique no menu MAIS e selecione Programar preenchimento.

  5. Na caixa de diálogo Programar preenchimento, escolha a Data de início e a Data de término.

    Definir datas de atualização

bq

Digite o comando bq mk, insira a sinalização --transfer_run e especifique --start_time e --end_time.

bq mk \
--transfer_run \
--start_time='start_time' \
--end_time='end_time' \
resource_name

Em que:

  • start_time e end_time são carimbos de data/hora que terminam em Z ou contêm uma diferença de fuso horário válida. Por exemplo:

    • 2017-08-19T12:11:35.00Z
    • 2017-05-25T00:00:00+00:00
  • resource_name é o nome do recurso da transferência, também conhecido como configuração da transferência. Se você não souber esse nome, execute o comando bq ls --transfer_config --transfer_location=location para listar todas as transferências.

Por exemplo:

Insira o comando a seguir para programar um preenchimento da configuração de transferência projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7.

bq mk \
--transfer_run \
--start_time 2017-05-25T00:00:00Z \
--end_time 2017-05-25T00:00:00Z \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

Use o método projects.locations.transferConfigs.startManualRuns e forneça o recurso de configuração de transferência por meio do parâmetro parent.

Java

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ScheduleTransferRunsRequest;
import com.google.cloud.bigquery.datatransfer.v1.ScheduleTransferRunsResponse;
import com.google.protobuf.Timestamp;
import java.io.IOException;
import org.threeten.bp.Clock;
import org.threeten.bp.Instant;
import org.threeten.bp.temporal.ChronoUnit;

// Sample to run schedule back fill for transfer config
public class ScheduleBackFill {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    Clock clock = Clock.systemDefaultZone();
    Instant instant = clock.instant();
    Timestamp startTime =
        Timestamp.newBuilder()
            .setSeconds(instant.minus(5, ChronoUnit.DAYS).getEpochSecond())
            .setNanos(instant.minus(5, ChronoUnit.DAYS).getNano())
            .build();
    Timestamp endTime =
        Timestamp.newBuilder()
            .setSeconds(instant.minus(2, ChronoUnit.DAYS).getEpochSecond())
            .setNanos(instant.minus(2, ChronoUnit.DAYS).getNano())
            .build();
    scheduleBackFill(configId, startTime, endTime);
  }

  public static void scheduleBackFill(String configId, Timestamp startTime, Timestamp endTime)
      throws IOException {
    try (DataTransferServiceClient client = DataTransferServiceClient.create()) {
      ScheduleTransferRunsRequest request =
          ScheduleTransferRunsRequest.newBuilder()
              .setParent(configId)
              .setStartTime(startTime)
              .setEndTime(endTime)
              .build();
      ScheduleTransferRunsResponse response = client.scheduleTransferRuns(request);
      System.out.println("Schedule backfill run successfully :" + response.getRunsCount());
    } catch (ApiException ex) {
      System.out.print("Schedule backfill was not run." + ex.toString());
    }
  }
}

Python

import datetime

from google.cloud import bigquery_datatransfer

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

transfer_config_name = "projects/1234/locations/us/transferConfigs/abcd"
now = datetime.datetime.now(datetime.timezone.utc)
start_time = now - datetime.timedelta(days=5)
end_time = now - datetime.timedelta(days=2)

# Some data sources, such as scheduled_query only support daily run.
# Truncate start_time and end_time to midnight time (00:00AM UTC).
start_time = datetime.datetime(
    start_time.year, start_time.month, start_time.day, tzinfo=datetime.timezone.utc
)
end_time = datetime.datetime(
    end_time.year, end_time.month, end_time.day, tzinfo=datetime.timezone.utc
)

response = transfer_client.schedule_transfer_runs(
    parent=transfer_config_name,
    start_time=start_time,
    end_time=end_time,
)

print("Started transfer runs:")
for run in response.runs:
    print(f"backfill: {run.run_time} run: {run.name}")

Como atualizar credenciais

Uma transferência usa as credenciais do usuário que a criou. Se você precisar alterar o usuário anexado a uma configuração de transferência, será possível atualizar as credenciais da transferência. Isso é útil se o usuário que criou a transferência não estiver mais em sua organização.

Permissões necessárias

Para atualizar as credenciais, as permissões bigquery.transfers.update são necessárias. O papel predefinido bigquery.admin do IAM inclui as permissões bigquery.transfers.update.

Para mais informações sobre os papéis do IAM no serviço de transferência de dados do BigQuery, consulte a Referência de controle de acesso.

Como atualizar as credenciais de uma transferência

Para atualizar as credenciais de uma transferência:

Console

  1. No Console do Cloud, acesse a página do BigQuery.

    Acessar a página do BigQuery

  2. Clique em Transferências.

  3. Na página Transferências, clique em uma transferência apropriada na lista.

  4. Clique no menu MAIS e, em seguida, selecione Atualizar credenciais.

  5. Faça login na sua Conta do Google e clique em Permitir para conceder ao serviço de transferência de dados do BigQuery permissão para ver os dados de relatórios e acessar e gerenciar os dados no BigQuery.

bq

Digite o comando bq update, insira o nome do recurso da configuração de transferência por meio da sinalização --transfer_config e especifique a sinalização --update_credentials.

bq update \
--update_credentials=boolean \
--transfer_config \
resource_name

Em que:

  • boolean é um valor booleano que indica se as credenciais precisam ser atualizadas para a configuração da transferência;
  • resource_name é o nome do recurso da transferência, também conhecido como configuração da transferência. Se você não souber esse nome, execute o comando bq ls --transfer_config --transfer_location=location para listar todas as transferências.

Por exemplo:

Insira o comando a seguir para atualizar as credenciais da transferência projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7 do Google Ads.

bq update \
--update_credentials=true \
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

Use o método projects.transferConfigs.patch e forneça os parâmetros authorizationCode e updateMask.

Java

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.cloud.bigquery.datatransfer.v1.UpdateTransferConfigRequest;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to update credentials in transfer config.
public class UpdateCredentials {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    String serviceAccount = "MY_SERVICE_ACCOUNT";
    TransferConfig transferConfig = TransferConfig.newBuilder().setName(configId).build();
    FieldMask updateMask = FieldMaskUtil.fromString("service_account_name");
    updateCredentials(transferConfig, serviceAccount, updateMask);
  }

  public static void updateCredentials(
      TransferConfig transferConfig, String serviceAccount, FieldMask updateMask)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      UpdateTransferConfigRequest request =
          UpdateTransferConfigRequest.newBuilder()
              .setTransferConfig(transferConfig)
              .setUpdateMask(updateMask)
              .setServiceAccountName(serviceAccount)
              .build();
      dataTransferServiceClient.updateTransferConfig(request);
      System.out.println("Credentials updated successfully");
    } catch (ApiException ex) {
      System.out.print("Credentials was not updated." + ex.toString());
    }
  }
}

Python

from google.cloud import bigquery_datatransfer
from google.protobuf import field_mask_pb2

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

service_account_name = "abcdef-test-sa@abcdef-test.iam.gserviceaccount.com"
transfer_config_name = "projects/1234/locations/us/transferConfigs/abcd"

transfer_config = bigquery_datatransfer.TransferConfig(name=transfer_config_name)

transfer_config = transfer_client.update_transfer_config(
    {
        "transfer_config": transfer_config,
        "update_mask": field_mask_pb2.FieldMask(paths=["service_account_name"]),
        "service_account_name": service_account_name,
    }
)

print("Updated config: '{}'".format(transfer_config.name))

Como desativar uma transferência

Quando você desabilita uma transferência, disabled é adicionado ao nome da transferência. Quando a transferência é desativada, nenhuma execução nova é programada e nenhum preenchimento novo é permitido. Todas as transferências em andamento são concluídas.

Desativar uma transferência não remove os dados já transferidos para o BigQuery. Os dados transferidos anteriormente geram custos de armazenamento padrão do BigQuery até você excluir o conjunto de dados ou as tabelas.

Permissões necessárias

Para desativar uma transferência, as permissões bigquery.transfers.update são necessárias. O papel predefinido bigquery.admin do IAM inclui as permissões bigquery.transfers.update.

Para mais informações sobre os papéis do IAM no serviço de transferência de dados do BigQuery, consulte a Referência de controle de acesso.

Como desativar uma transferência

Para desativar uma transferência:

Console

  1. No Console do Google Cloud, acesse a página do BigQuery.

    Ir para o BigQuery

  2. Clique em Transferências.

  3. Na página Transferências, clique na transferência na lista que você quer desativar.

  4. Clique em DESATIVAR. Para reativar a transferência, clique em ATIVAR.

bq

A CLI não aceita a desativação de uma transferência.

API

Use o método projects.locations.transferConfigs.patch e defina disabled como true no recurso projects.locations.transferConfig.

Java

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.cloud.bigquery.datatransfer.v1.UpdateTransferConfigRequest;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to disable transfer config.
public class DisableTransferConfig {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    TransferConfig transferConfig =
        TransferConfig.newBuilder().setName(configId).setDisabled(true).build();
    FieldMask updateMask = FieldMaskUtil.fromString("disabled");
    disableTransferConfig(transferConfig, updateMask);
  }

  public static void disableTransferConfig(TransferConfig transferConfig, FieldMask updateMask)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      UpdateTransferConfigRequest request =
          UpdateTransferConfigRequest.newBuilder()
              .setTransferConfig(transferConfig)
              .setUpdateMask(updateMask)
              .build();
      TransferConfig updateConfig = dataTransferServiceClient.updateTransferConfig(request);
      System.out.println("Transfer config disabled successfully :" + updateConfig.getDisplayName());
    } catch (ApiException ex) {
      System.out.print("Transfer config was not disabled." + ex.toString());
    }
  }
}

Para reativar a transferência, siga estas etapas:

/*
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.example.bigquerydatatransfer;

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.cloud.bigquery.datatransfer.v1.UpdateTransferConfigRequest;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to disable transfer config.
public class DisableTransferConfig {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    TransferConfig transferConfig =
        TransferConfig.newBuilder().setName(configId).setDisabled(true).build();
    FieldMask updateMask = FieldMaskUtil.fromString("disabled");
    disableTransferConfig(transferConfig, updateMask);
  }

  public static void disableTransferConfig(TransferConfig transferConfig, FieldMask updateMask)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      UpdateTransferConfigRequest request =
          UpdateTransferConfigRequest.newBuilder()
              .setTransferConfig(transferConfig)
              .setUpdateMask(updateMask)
              .build();
      TransferConfig updateConfig = dataTransferServiceClient.updateTransferConfig(request);
      System.out.println("Transfer config disabled successfully :" + updateConfig.getDisplayName());
    } catch (ApiException ex) {
      System.out.print("Transfer config was not disabled." + ex.toString());
    }
  }
}

Como excluir uma transferência

Quando uma transferência é excluída, nenhuma execução de transferência nova é programada. Qualquer execução de transferência em andamento é interrompida.

A exclusão de uma transferência não remove nenhum dado já transferido para o BigQuery. Os dados transferidos anteriormente geram custos de armazenamento padrão do BigQuery até você excluir o conjunto de dados ou as tabelas.

Permissões necessárias

Para excluir uma transferência, as permissões bigquery.transfers.update são necessárias. O papel predefinido bigquery.admin do IAM inclui as permissões bigquery.transfers.update.

Para mais informações sobre os papéis do IAM no serviço de transferência de dados do BigQuery, consulte a Referência de controle de acesso.

Como excluir uma transferência

Para excluir uma transferência, faça o seguinte:

Console

  1. No Console do Google Cloud, acesse a página do BigQuery.

    Ir para o BigQuery

  2. Clique em Transferências.

  3. Na página Transferências, clique na transferência na lista que você quer excluir.

  4. Clique em EXCLUIR. Como medida de segurança, você precisará digitar a palavra "delete" em uma caixa para confirmar sua intenção.

bq

Digite o comando bq rm e insira o nome do recurso da configuração da transferência. Use a sinalização -f para excluir uma configuração de transferência sem confirmação.

bq rm \
-f \
--transfer_config \
resource_name

Em que:

Por exemplo, insira o comando a seguir para excluir a configuração da transferência projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7.

bq rm \
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

Use o método projects.locations.transferConfigs.delete e forneça o recurso que você está excluindo por meio do parâmetro name.

Java

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.DeleteTransferConfigRequest;
import java.io.IOException;

// Sample to delete a transfer config
public class DeleteTransferConfig {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // i.e projects/{project_id}/transferConfigs/{config_id}` or
    // `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}`
    String configId = "MY_CONFIG_ID";
    deleteTransferConfig(configId);
  }

  public static void deleteTransferConfig(String configId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      DeleteTransferConfigRequest request =
          DeleteTransferConfigRequest.newBuilder().setName(configId).build();
      dataTransferServiceClient.deleteTransferConfig(request);
      System.out.println("Transfer config deleted successfully");
    } catch (ApiException ex) {
      System.out.println("Transfer config was not deleted." + ex.toString());
    }
  }
}

Python

import google.api_core.exceptions
from google.cloud import bigquery_datatransfer

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

transfer_config_name = "projects/1234/locations/us/transferConfigs/abcd"
try:
    transfer_client.delete_transfer_config(name=transfer_config_name)
except google.api_core.exceptions.NotFound:
    print("Transfer config not found.")
else:
    print(f"Deleted transfer config: {transfer_config_name}")

Como gerar registros e monitorar

O serviço de transferência de dados do BigQuery exporta registros e métricas para o Cloud Logging e o Cloud Monitoring, o que fornece observabilidade nas transferências. Para saber mais sobre a geração de registros e o monitoramento do serviço de transferência de dados do BigQuery, consulte geração de registros de auditoria, geração de registros na nuvem e monitoramento na nuvem.