Transferências do Google Play

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

Relatórios compatíveis

O serviço de transferência de dados do BigQuery para Google Play é compatível com as seguintes opções de relatórios mensais:

Relatórios detalhados

Relatórios agregados

Para informações sobre como os relatórios do Google Play são transformados em tabelas do BigQuery, consulte Transformações de relatórios do Google Play.

Opção de relatório Suporte
Versão da API compatível

N/A

Repetir frequência

Diariamente, no horário em que a transferência de dados foi criada pela primeira vez (padrão)

Você pode configurar a hora do dia.

Atualizar janela

Últimos 7 dias

Não configurável

Duração máxima do preenchimento

Sem limite

O Google Play não tem limites conhecidos de retenção de dados, mas o serviço de transferência de dados do BigQuery tem limites em relação a quantos dias podem ser solicitados em um único preenchimento. Para informações sobre preenchimentos, consulte Acionar manualmente uma transferência.

Ingestão de dados das transferências do Google Play

Ao transferir dados do Google Play 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.

Limitações

  • A frequência mínima para programar uma transferência de dados é de uma vez a cada 24 horas. Por padrão, uma transferência começa no momento em que você cria a transferência. No entanto, é possível configurar o horário de início da transferência ao configurar sua transferência.
  • O serviço de transferência de dados do BigQuery não é compatível com transferências incrementais durante uma transferência do Google Play. Quando você especifica uma data para uma transferência de dados, todos os dados disponíveis nessa data são transferidos.

Antes de começar

Antes de criar uma transferência de dados do Google Play:

  • 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 Google Play.
  • Localize seu bucket do Cloud Storage:
    1. No Google Play Console, clique em Fazer o download de relatórios e selecione Avaliações, Estatísticas ou Finanças.
    2. Para copiar o ID do bucket do Cloud Storage, clique em Copiar URI do Cloud Storage. Seu ID do bucket começa com gs://. Por exemplo, no relatório de avaliações, seu ID será semelhante a este:
      gs://pubsite_prod_rev_01234567890987654321/reviews
    3. Para a transferência de dados do Google Play, você precisa copiar apenas o ID exclusivo que está entre gs:// e /reviews:
      pubsite_prod_rev_01234567890987654321
  • Se você pretende configurar notificações de execução de transferência do Pub/Sub, é preciso ter permissões pubsub.topics.setIamPolicy. As permissões do Pub/Sub não serão necessárias se você configurar notificações por e-mail. Para 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.

  • Google Play: verifique se você tem as seguintes permissões no Google Play:

    A equipe do Google Cloud NÃO gera nem concede acesso aos arquivos do Google Play em seu nome. Se você precisar de ajuda para acessá-los, consulte Entre em contato com o suporte do Google Play.

Configurar uma transferência do Google Play

A configuração de uma transferência de dados do Google Play requer os itens a seguir:

  • bucket do Cloud Storage: As etapas para localizar seu bucket do Cloud Storage são descritas em Antes de começar. O bucket do Cloud Storage começa com pubsite_prod_rev. Por exemplo: pubsite_prod_rev_01234567890987654321.
  • Sufixo da tabela: um nome fácil para todas as origens de dados que são carregadas no mesmo conjunto de dados. O sufixo é usado para evitar que transferências separadas gravem nas mesmas tabelas. O sufixo da tabela precisa ser único em todas as transferências que carregam dados para o mesmo conjunto de dados. Além disso, o sufixo precisa ser curto para reduzir o comprimento do nome de tabela resultante.

Para configurar uma transferência de dados do Google Play:

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 Google Play.

      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, faça o seguinte:

      • Em Frequência de repetição, escolha uma opção para a frequência de execução da transferência de dados: Se você selecionar Dias, forneça um horário válido em UTC.

        • Horas
        • Dias
        • Sob demanda
      • Se aplicável, selecione Começar agora ou Começar no horário definido e forneça uma data de início e um horário de execução.

    • 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 origem de dados:

      • Em bucket do Cloud Storage, insira o código do bucket.
      • Em Sufixo da tabela, insira um sufixo como "MT" (para "Minha Transferência").

        Detalhes de origem do Google Play

    • No menu Conta de serviço, selecione uma conta de serviço nas contas de serviço associadas ao seu projeto do Google Cloud. É possível associar uma conta de serviço à transferência de dados em vez de usar suas credenciais de usuário. Para mais informações sobre o uso de contas de serviço com transferências de dados, consulte Usar contas de serviço.

    • 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:

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

Em que:

  • project_id é o ID do projeto. Se --project_id não for especificado, o projeto padrão será usado.
  • dataset é o conjunto de dados de destino na configuração da transferência:
  • name é o nome de exibição da configuração de transferência. O nome da transferência de dados pode ser qualquer valor que permita identificá-la, caso você precise modificá-la depois.
  • parameters contém os parâmetros da configuração da transferência criada no formato JSON. Por exemplo, --params='{"param":"param_value"}'. Para o Google Play, forneça os parâmetros bucket e table_suffix. bucket é o bucket do Cloud Storage que contém os arquivos de relatório do Google Play.
  • data_source é a fonte de dados: play.
  • service_account_name é o nome da conta de serviço usado para autenticar a transferência de dados. A conta de serviço precisa pertencer ao mesmo project_id usado para criar a transferência e ter todas as permissões necessárias.

Por exemplo, o comando a seguir cria uma transferência de dados do Google Play chamada My Transfer usando o bucket pubsite_prod_rev_01234567890987654321 do Cloud Storage e o conjunto de dados de destino mydataset. A transferência de dados é criada no projeto padrão:

bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"bucket":"pubsite_prod_rev_01234567890987654321","table_suffix":"MT"}' \
--data_source=play

Ao executar o comando pela primeira vez, você receberá uma mensagem como 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 na mensagem 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 a play transfer config.
public class CreatePlayTransfer {

  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";
    String tableSuffix = "_test";
    Map<String, Value> params = new HashMap<>();
    params.put("bucket", Value.newBuilder().setStringValue(bucket).build());
    params.put("table_suffix", Value.newBuilder().setStringValue(tableSuffix).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Play Config Name")
            .setDataSourceId("play")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .build();
    createPlayTransfer(projectId, transferConfig);
  }

  public static void createPlayTransfer(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("play transfer created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("play transfer was not created." + ex.toString());
    }
  }
}

Resolver problemas de configuração de transferência do Google Play

Se você tiver problemas para configurar a transferência de dados, consulte Solução de problemas de configuração da transferência do serviço de transferência de dados do BigQuery.

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.

Preços

Para mais informações sobre preços de transferência de dados do Google Play, consulte a página Preços.

Assim que os dados são transferidos para o BigQuery, são aplicados os preços padrão de armazenamento e consulta do BigQuery.

A seguir