Transferências do Campaign Manager

Com o conector do serviço de transferência de dados do BigQuery para Campaign Manager, é possível programar e gerenciar automaticamente jobs de carregamento recorrentes de dados de relatório do Campaign Manager.

Relatórios compatíveis

O serviço de transferência de dados do BigQuery para Campaign Manager (antigo DoubleClick Campaign Manager) é compatível com as seguintes opções de relatório:

Para ver informações sobre como os relatórios do Campaign Manager são transformados em tabelas e visualizações do BigQuery, consulte Transformações de relatório do Campaign Manager.

Opção de relatório Suporte
Repetir frequência

A cada 8 horas, com base no tempo de criação.

Não configurável

Atualizar janela

Últimos 2 dias

Não configurável

Duração máxima do preenchimento

Últimos 60 dias

O Campaign Manager mantém os arquivos de transferência de dados por até 60 dias. Ele excluirá os arquivos que excederem esse período.

Ingestão de dados das transferências do Campaign Manager

Ao transferir dados do Campaign Manager para o BigQuery, eles são carregados em tabelas do BigQuery particionadas por data. A partição da tabela em que os dados são carregados corresponde à data da fonte de dados. Se você programar várias transferências para a mesma data, o serviço de transferência de dados do BigQuery substituirá a partição dessa data específica pelos dados mais recentes. Várias transferências no mesmo dia ou preenchimentos não resultam em dados duplicados, e as partições de outras datas não são afetadas.

Atualizar janelas

Uma janela de atualização é o número de dias que uma transferência de dados recupera dados quando ocorre uma transferência de dados. Por exemplo, se a janela de atualização for de três dias e uma transferência diária ocorrer, o serviço de transferência de dados do BigQuery vai extrair todos os dados da tabela de origem dos últimos três dias. Nesse exemplo, quando uma transferência diária ocorre, o serviço de transferência de dados do BigQuery cria uma nova partição de tabela de destino do BigQuery com uma cópia dos dados da tabela de origem do dia atual e, em seguida, aciona automaticamente as execuções de preenchimento para atualizar as partições de tabela de destino do BigQuery com os dados da tabela de origem dos últimos dois dias. As execuções de preenchimento automático acionadas automaticamente vão substituir ou atualizar de forma incremental a tabela de destino do BigQuery, dependendo de se as atualizações incrementais são aceitas ou não pelo conector do serviço de transferência de dados do BigQuery.

Quando você executa uma transferência de dados pela primeira vez, ela recupera todos os dados de origem disponíveis na janela de atualização. Por exemplo, se a janela de atualização for de três dias e você executar a transferência de dados pela primeira vez, o serviço de transferência de dados do BigQuery vai recuperar todos os dados de origem em três dias.

As janelas de atualização são mapeadas para o campo da APITransferConfig.data_refresh_window_days.

Para recuperar dados fora da janela de atualização, como dados históricos, ou para recuperar dados de interrupções ou lacunas de transferência, inicie ou programe uma execução de preenchimento.

Antes de começar

Antes de criar uma transferência de dados do Campaign Manager:

  • Verifique se você realizou todas as ações necessárias para ativar o serviço de transferência de dados do BigQuery.
  • Crie um conjunto de dados do BigQuery para armazenar os dados do Campaign Manager.
  • Certifique-se de que sua organização tenha acesso aos arquivos de transferência de dados v2 do Campaign Manager (DTv2 do Campaign Manager). Esses arquivos são entregues pela equipe do Campaign Manager a um bucket do Cloud Storage. Para ter acesso aos arquivos DTv2 do Campaign Manager, a próxima etapa será diferente se você tiver um contrato direto com o Campaign Manager. Nos dois casos, é possível que haja a cobrança de taxas extras.

    • Se você tiver um contrato com o Campaign Manager, entre em contato com o suporte do Campaign Manager para configurar os arquivos DTv2 do Campaign Manager.
    • Se você não tiver um contrato com o Campaign Manager, sua agência ou o revendedor do Campaign Manager poderá ter acesso aos arquivos DTv2 do Campaign Manager. Entre em contato com a agência ou o revendedor para ter acesso a esses arquivos.

    Depois de concluir essa etapa, você receberá um nome de bucket do Cloud Storage semelhante ao seguinte:

    dcdt_-dcm_account123456

  • Se você pretende configurar notificações de execução de transferência para o Pub/Sub, é preciso ter permissões pubsub.topics.setIamPolicy. Para saber mais informações, consulte Notificações de execução do serviço de transferência de dados do BigQuery.

Permissões necessárias

  • BigQuery: verifique se a pessoa que está criando a transferência de dados tem as permissões a seguir no BigQuery:

    • Permissões bigquery.transfers.update para criar a transferência de dados
    • Permissões bigquery.datasets.get e bigquery.datasets.update no conjunto de dados de destino

    O papel predefinido bigquery.admin do IAM inclui permissões bigquery.transfers.update, bigquery.datasets.update e bigquery.datasets.get. Para mais informações sobre os papéis do IAM no serviço de transferência de dados do BigQuery, consulte o controle de acesso.

  • Campaign Manager: acesso de leitura aos arquivos DTv2 do Campaign Manager armazenados no Cloud Storage. O acesso é gerenciado pela entidade em que você recebeu o bucket do Cloud Storage.

Configurar uma transferência do Campaign Manager

Para configurar uma transferência de dados do Campaign Manager, é necessário:

  • Bucket do Cloud Storage: o URI do bucket do Cloud Storage referente aos arquivos DTv2 do Campaign Manager, conforme descrito em Antes de começar. O nome do bucket é semelhante a este:

    dcdt_-dcm_account123456

  • Código do Campaign Manager: código do Campaign Manager Network, Advertiser ou Floodlight. O código do Network é o pai na hierarquia.

Encontrar seu ID do Campaign Manager

Para recuperar seu ID do Campaign Manager, use o console do Cloud Storage para examinar os arquivos do seu bucket de transferência de dados do Campaign Manager no Cloud Storage. O ID do Campaign Manager é usado para corresponder arquivos no bucket do Cloud Storage fornecido. O ID fica incorporado no nome do arquivo, e não no nome do bucket do Cloud Storage.

Exemplo:

  • Em um arquivo chamado dcm_account123456_activity_*, o ID é 123456.
  • Em um arquivo chamado dcm_floodlight7890_activity_*, o ID é 7890.
  • Em um arquivo chamado dcm_advertiser567_activity_*, o ID é 567.

Como encontrar o prefixo de nome de arquivo

Em casos raros, os arquivos no seu bucket do Cloud Storage podem ter nomes personalizados, fora do padrão, que foram configurados para você pela equipe de serviços do Google Marketing Platform.

Exemplo:

  • Em um arquivo chamado dcm_account123456custom_activity_*, o prefixo é dcm_account123456custom, tudo antes de _activity.

Entre em contato com o suporte do Campaign Manager se precisar de ajuda.

Criar uma transferência de dados para o Campaign Manager

Console

  1. Acesse a página "Transferências de dados" no console do Google Cloud.

    Acesse Transferências de dados

  2. Clique em Criar transferência.

  3. Na página Criar transferência:

    • Na seção Tipo de origem, em Origem, escolha Campaign Manager.

      Origem da transferência

    • No campo Nome de exibição da seção Transferir nome da configuração, insira um nome para a transferência de dados, como My Transfer. O nome da transferência pode ser qualquer valor que permita identificá-la, caso você precise modificá-la mais tarde.

      Nome da transferência

    • Na seção Opções de programação, não altere o valor padrão de Programação (Começar agora). Se preferir, clique em Começar no horário definido.

      • Em Repetições, escolha uma opção para a frequência de execução da transferência:

        • Diário (padrão)
        • Semanais
        • Mensais
        • Personalizadas
        • Sob demanda

        Se você escolher uma opção diferente de "Diário", outras opções estarão disponíveis. Por exemplo, se você escolher "Semanal", aparecerá uma opção para selecionar o dia da semana.

      • Em Data e hora de início, insira a data e a hora para iniciar a transferência de dados. Se você escolher Iniciar agora, essa opção ficará desativada.

        Programação da transferência

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

      Conjunto de dados da transferência

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

      • Em Bucket do Cloud Storage, insira ou procure o nome do bucket do Cloud Storage que armazena os arquivos do Data Transfer V2.0. Ao inserir o nome do bucket, não inclua gs://.
      • Em Código da DoubleClick, digite o código adequado do Campaign Manager.
      • Opcional: se os arquivos tiverem nomes padrão como estes exemplos, deixe em branco o campo Prefixo do nome do arquivo. Especifique um prefixo de nome de arquivo se os arquivos no bucket do Cloud Storage tiverem nomes de arquivo personalizados.

        Detalhes da origem do Campaign Manager

    • 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 falhar.
      • Em Selecionar um tópico do Pub/Sub, escolha o nome do tópico ou clique em Criar um tópico. Essa opção configura notificações de execução do Pub/Sub da sua transferência.
  4. Clique em Salvar.

bq

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

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

Em que:

  • project_id é o ID do projeto;
  • dataset é o conjunto de dados de destino na configuração da transferência de dados.
  • name é o nome de exibição da configuração de transferência de dados. O nome da transferência pode ser qualquer valor que permita identificá-la facilmente, caso precise modificá-la mais tarde.
  • parameters contém os parâmetros da configuração da transferência de dadps criada no formato JSON. Por exemplo, --params='{"param":"param_value"}'. Para o Campaign Manager, você precisa fornecer os parâmetros bucket e network_id. bucket é o bucket do Cloud Storage que contém os arquivos do DTv2 do Campaign Manager; network_id é o ID da rede, do Floodlight ou do anunciante;
  • data_source é a fonte de dados: dcm_dt (Campaign Manager).

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.

Por exemplo, o comando a seguir cria uma transferência de dados do Campaign Manager chamada My Transfer usando o ID do Campaign Manager 123456, o bucket do Cloud Storage dcdt_-dcm_account123456 e o conjunto de dados de destino mydataset. O parâmetro file_name_prefix é opcional e usado apenas para nomes de arquivos raros e personalizados.

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

bq mk --transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"bucket": "dcdt_-dcm_account123456","network_id": "123456","file_name_prefix":"YYY"}' \
--data_source=dcm_dt

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.

Java

Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to create campaign manager transfer config
public class CreateCampaignmanagerTransfer {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String projectId = "MY_PROJECT_ID";
    String datasetId = "MY_DATASET_ID";
    String bucket = "gs://cloud-sample-data";
    // the network_id only allows digits
    String networkId = "7878";
    String fileNamePrefix = "test_";
    Map<String, Value> params = new HashMap<>();
    params.put("bucket", Value.newBuilder().setStringValue(bucket).build());
    params.put("network_id", Value.newBuilder().setStringValue(networkId).build());
    params.put("file_name_prefix", Value.newBuilder().setStringValue(fileNamePrefix).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Campaignmanager Config Name")
            .setDataSourceId("dcm_dt")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .build();
    createCampaignmanagerTransfer(projectId, transferConfig);
  }

  public static void createCampaignmanagerTransfer(String projectId, TransferConfig transferConfig)
      throws IOException {
    try (DataTransferServiceClient client = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = client.createTransferConfig(request);
      System.out.println("Campaignmanager transfer created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("Campaignmanager transfer was not created." + ex.toString());
    }
  }
}

Resolver problemas de configuração de transferência do Campaign Manager

Se você tiver problemas para configurar a transferência de dados, consulte Problemas de transferência do Campaign Manager em Solução de problemas de configurações de transferência.

Consultar dados

Quando os dados são transferidos para o BigQuery, eles são gravados em tabelas particionadas por tempo de processamento. Para mais informações, consulte Introdução às tabelas particionadas.

Use a pseudocoluna _PARTITIONTIME para consultar suas tabelas diretamente em vez de usar visualizações geradas automaticamente. Para mais informações, veja Como consultar tabelas particionadas.

Consultas de amostra do Campaign Manager

Use as consultas de amostra do Campaign Manager a seguir para analisar os dados transferidos. Também é possível usar as consultas em uma ferramenta de visualização, como o Looker Studio. Essas consultas são fornecidas para você começar a consultar seus dados do Campaign Manager com o BigQuery. Para solucionar outras dúvidas sobre o que fazer com esses relatórios, entre em contato com seu representante técnico do Campaign Manager.

Em todas as consultas a seguir, substitua as variáveis como dataset pelos seus valores.

Campanhas mais recentes

A amostra de consulta SQL a seguir recupera as campanhas mais recentes.

SELECT
  Campaign,
  Campaign_ID
FROM
  `dataset.match_table_campaigns_campaign_manager_id`
WHERE
  _DATA_DATE = _LATEST_DATE

Impressões e usuários distintos por campanha

A amostra de consulta SQL a seguir analisa o número de impressões e usuários distintos por campanha nos últimos 30 dias.

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
  SELECT
    Campaign_ID,
    _DATA_DATE AS Date,
    COUNT(*) AS count,
    COUNT(DISTINCT User_ID) AS du
  FROM
    `dataset.impression_campaign_manager_id`
  WHERE
    _DATA_DATE BETWEEN start_date
    AND end_date
  GROUP BY
    Campaign_ID,
    Date

Campanhas mais recentes ordenadas por campanha e data

A amostra de consulta SQL a seguir analisa as campanhas mais recentes nos últimos 30 dias ordenadas por campanha e data.

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
SELECT
  Campaign,
  Campaign_ID,
  Date
FROM (
  SELECT
    Campaign,
    Campaign_ID
  FROM
    `dataset.match_table_campaigns_campaign_manager_id`
  WHERE
    _DATA_DATE = _LATEST_DATE ),
  (
  SELECT
    date AS Date
  FROM
    `bigquery-public-data.utility_us.date_greg`
  WHERE
    Date BETWEEN start_date
    AND end_date )
ORDER BY
  Campaign_ID,
  Date

Impressões e usuários distintos por campanha em um período

A amostra de consulta SQL a seguir analisa o número de impressões e usuários distintos por campanha entre start_date e end_date.

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
SELECT
  base.*,
  imp.count AS imp_count,
  imp.du AS imp_du
FROM (
  SELECT
    *
  FROM (
    SELECT
      Campaign,
      Campaign_ID
    FROM
      `dataset.match_table_campaigns_campaign_manager_id`
    WHERE
      _DATA_DATE = _LATEST_DATE ),
    (
    SELECT
      date AS Date
    FROM
      `bigquery-public-data.utility_us.date_greg`
    WHERE
      Date BETWEEN start_date
      AND end_date ) ) AS base
LEFT JOIN (
  SELECT
    Campaign_ID,
    _DATA_DATE AS Date,
    COUNT(*) AS count,
    COUNT(DISTINCT User_ID) AS du
  FROM
    `dataset.impression_campaign_manager_id`
  WHERE
    _DATA_DATE BETWEEN start_date
    AND end_date
  GROUP BY
    Campaign_ID,
    Date ) AS imp
ON
  base.Campaign_ID = imp.Campaign_ID
  AND base.Date = imp.Date
WHERE
  base.Campaign_ID = imp.Campaign_ID
  AND base.Date = imp.Date
ORDER BY
  base.Campaign_ID,
  base.Date

Impressões, cliques, atividades e usuários distintos por campanha

A amostra de consulta SQL a seguir analisa o número de impressões, cliques, atividades e usuários distintos por campanha nos últimos 30 dias. Nesta consulta, substitua as variáveis como campaign_list por seus valores. Por exemplo, substitua campaign_list por uma lista separada por vírgulas de todas as campanhas do Campaign Manager de interesse no escopo da consulta.

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
SELECT
  base.*,
  imp.count AS imp_count,
  imp.du AS imp_du,
  click.count AS click_count,
  click.du AS click_du,
  activity.count AS activity_count,
  activity.du AS activity_du
FROM (
  SELECT
    *
  FROM (
    SELECT
      Campaign,
      Campaign_ID
    FROM
      `dataset.match_table_campaigns_campaign_manager_id`
    WHERE
      _DATA_DATE = _LATEST_DATE ),
    (
    SELECT
      date AS Date
    FROM
      `bigquery-public-data.utility_us.date_greg`
    WHERE
      Date BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
      AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) ) ) AS base
LEFT JOIN (
  SELECT
    Campaign_ID,
    _DATA_DATE AS Date,
    COUNT(*) AS count,
    COUNT(DISTINCT User_ID) AS du
  FROM
    `dataset.impression_campaign_manager_id`
  WHERE
    _DATA_DATE BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
    AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
  GROUP BY
    Campaign_ID,
    Date ) AS imp
ON
  base.Campaign_ID = imp.Campaign_ID
  AND base.Date = imp.Date
LEFT JOIN (
  SELECT
    Campaign_ID,
    _DATA_DATE AS Date,
    COUNT(*) AS count,
    COUNT(DISTINCT User_ID) AS du
  FROM
    `dataset.click_campaign_manager_id`
  WHERE
    _DATA_DATE BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
    AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
  GROUP BY
    Campaign_ID,
    Date ) AS click
ON
  base.Campaign_ID = click.Campaign_ID
  AND base.Date = click.Date
LEFT JOIN (
  SELECT
    Campaign_ID,
    _DATA_DATE AS Date,
    COUNT(*) AS count,
    COUNT(DISTINCT User_ID) AS du
  FROM
    `dataset.activity_campaign_manager_id`
  WHERE
    _DATA_DATE BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
    AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
  GROUP BY
    Campaign_ID,
    Date ) AS activity
ON
  base.Campaign_ID = activity.Campaign_ID
  AND base.Date = activity.Date
WHERE
  base.Campaign_ID IN campaign_list
  AND (base.Date = imp.Date
    OR base.Date = click.Date
    OR base.Date = activity.Date)
ORDER BY
  base.Campaign_ID,
  base.Date

Atividade da campanha

A amostra de consulta SQL a seguir analisa a atividade da campanha nos últimos 30 dias. Nesta consulta, substitua as variáveis como campaign_list por seus valores. Por exemplo, substitua campaign_list por uma lista separada por vírgulas de todas as campanhas do Campaign Manager de interesse no escopo da consulta.

# START_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
# END_DATE = DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
SELECT
  base.*,
  activity.count AS activity_count,
  activity.du AS activity_du
FROM (
  SELECT
    *
  FROM (
    SELECT
      Campaign,
      Campaign_ID
    FROM
      `dataset.match_table_campaigns_campaign_manager_id`
    WHERE
      _DATA_DATE = _LATEST_DATE ),
    (
    SELECT
      mt_at.Activity_Group,
      mt_ac.Activity,
      mt_ac.Activity_Type,
      mt_ac.Activity_Sub_Type,
      mt_ac.Activity_ID,
      mt_ac.Activity_Group_ID
    FROM
      `dataset.match_table_activity_cats_campaign_manager_id` AS mt_ac
    JOIN (
      SELECT
        Activity_Group,
        Activity_Group_ID
      FROM
        `dataset.match_table_activity_types_campaign_manager_id`
      WHERE
        _DATA_DATE = _LATEST_DATE ) AS mt_at
    ON
      mt_at.Activity_Group_ID = mt_ac.Activity_Group_ID
    WHERE
      _DATA_DATE = _LATEST_DATE ),
    (
    SELECT
      date AS Date
    FROM
      `bigquery-public-data.utility_us.date_greg`
    WHERE
      Date BETWEEN start_date
      AND end_date ) ) AS base
LEFT JOIN (
  SELECT
    Campaign_ID,
    Activity_ID,
    _DATA_DATE AS Date,
    COUNT(*) AS count,
    COUNT(DISTINCT User_ID) AS du
  FROM
    `dataset.activity_campaign_manager_id`
  WHERE
    _DATA_DATE BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -31 DAY)
    AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)
  GROUP BY
    Campaign_ID,
    Activity_ID,
    Date ) AS activity
ON
  base.Campaign_ID = activity.Campaign_ID
  AND base.Activity_ID = activity.Activity_ID
  AND base.Date = activity.Date
WHERE
  base.Campaign_ID IN campaign_list
  AND base.Activity_ID = activity.Activity_ID
ORDER BY
  base.Campaign_ID,
  base.Activity_Group_ID,
  base.Activity_ID,
  base.Date