Carregue dados do Google Play para o BigQuery

Pode carregar dados do Google Play para o BigQuery através do conetor do Serviço de transferência de dados do BigQuery para o Google Play. Com o Serviço de transferência de dados do BigQuery, pode agendar tarefas de transferência recorrentes que adicionam os seus dados mais recentes do Google Play ao BigQuery.

Vista geral do conetor

O Serviço de transferência de dados do BigQuery para o conetor do Google Play suporta as seguintes opções para a transferência de dados.

Opções de transferência de dados Apoio técnico
Relatórios suportados

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

Frequência de repetição O conetor do Google Play suporta transferências de dados diárias.

Por predefinição, as transferências de dados são agendadas no momento em que são criadas. Pode configurar a hora da transferência de dados quando configurar a transferência de dados.
Período de atualização O conetor do Google Play obtém dados do Google Play de até 7 dias no momento em que a transferência de dados é executada.

Para mais informações, consulte o artigo Períodos de atualização.
Disponibilidade de dados de preenchimento Execute um repreenchimento de dados para obter dados fora da transferência de dados agendada. Pode obter dados até ao limite permitido pela política de retenção de dados na sua origem de dados.

Carregamento de dados de transferências do Google Play

Quando transfere dados do Google Play para o BigQuery, os dados são carregados em tabelas do BigQuery particionadas por data. A partição da tabela na qual os dados são carregados corresponde à data da origem de dados. Se agendar várias transferências para a mesma data, o Serviço de transferência de dados do BigQuery substitui a partição dessa data específica pelos dados mais recentes. As várias transferências no mesmo dia ou a execução de preenchimentos não resultam em dados duplicados, e as partições para outras datas não são afetadas.

Atualize as janelas

Um período de atualização é o número de dias que uma transferência de dados obtém dados quando ocorre uma transferência de dados. Por exemplo, se a janela de atualização for de três dias e ocorrer uma transferência diária, o Serviço de transferência de dados do BigQuery obtém todos os dados da tabela de origem dos últimos três dias. Neste exemplo, quando ocorre uma transferência diária, o Serviço de transferência de dados do BigQuery cria uma nova partição da tabela de destino do BigQuery com uma cópia dos dados da tabela de origem do dia atual e, em seguida, aciona automaticamente execuções de preenchimento para atualizar as partições da 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 substituem ou atualizam incrementalmente a tabela de destino do BigQuery, consoante as atualizações incrementais sejam ou não suportadas no conector do Serviço de transferência de dados do BigQuery.

Quando executa uma transferência de dados pela primeira vez, a transferência de dados obtém 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 executar a transferência de dados pela primeira vez, o Serviço de transferência de dados do BigQuery obtém todos os dados de origem no prazo de três dias.

Para obter dados fora do período de atualização, como dados do histórico, ou para recuperar dados de quaisquer indisponibilidades ou lacunas de transferência, pode iniciar ou agendar uma execução de preenchimento.

Limitações

  • A frequência mínima para a qual pode agendar uma transferência de dados é uma vez a cada 24 horas. Por predefinição, uma transferência começa no momento em que cria a transferência. No entanto, pode configurar a hora de início da transferência quando configurar a transferência.
  • O Serviço de transferência de dados do BigQuery não suporta transferências de dados incrementais durante uma transferência do Google Play. Quando especifica uma data para uma transferência de dados, todos os dados disponíveis para essa data são transferidos.

Antes de começar

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

  • Verifique se concluiu 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.
  • Encontre o seu contentor do Cloud Storage:
    1. Na Google Play Console, clique em Transferir relatórios e selecione Críticas, Estatísticas ou Financeiros.
    2. Para copiar o ID do seu contentor do Cloud Storage, clique em Copiar URI do Cloud Storage. O seu ID de segmento começa por gs://. Por exemplo, para o relatório de críticas, o seu ID é semelhante ao seguinte:
      gs://pubsite_prod_rev_01234567890987654321/reviews
    3. Para a transferência de dados do Google Play, só tem de copiar o ID único que se encontra entre gs:// e /reviews:
      pubsite_prod_rev_01234567890987654321
  • Se pretender configurar notificações de execução de transferências para o Pub/Sub, tem de ter pubsub.topics.setIamPolicy autorizações. As autorizações do Pub/Sub não são necessárias se configurar apenas notificações por email. Para mais informações, consulte Notificações de execução do Serviço de transferência de dados do BigQuery.

Autorizações necessárias

  • BigQuery: certifique-se de que a pessoa que cria a transferência de dados tem as seguintes autorizações no BigQuery:

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

    A bigquery.adminfunção de IAM predefinida inclui as autorizações bigquery.transfers.update, bigquery.datasets.update e bigquery.datasets.get. Para mais informações sobre as funções do IAM no Serviço de transferência de dados do BigQuery, consulte o artigo Controlo de acesso.

  • Google Play: certifique-se de que tem as seguintes autorizações no Google Play:

    A equipa Google Cloud NÃOtem a capacidade de gerar nem conceder acesso a ficheiros do Google Play em seu nome. Consulte o artigo Contacte o apoio técnico do Google Play para obter ajuda no acesso a ficheiros do Google Play.

Configure uma transferência do Google Play

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

  • Contentor do Cloud Storage. Os passos para localizar o seu contentor do Cloud Storage estão descritos em Antes de começar. O seu contentor do Cloud Storage começa com pubsite_prod_rev. Por exemplo: pubsite_prod_rev_01234567890987654321.
  • Sufixo da tabela: um nome fácil de usar para todas as origens de dados que estão a ser carregadas no mesmo conjunto de dados. O sufixo é usado para impedir que transferências separadas escrevam nas mesmas tabelas. O sufixo da tabela tem de ser exclusivo em todas as transferências que carregam dados para o mesmo conjunto de dados, e o sufixo deve ser curto para minimizar o comprimento do nome da tabela resultante.

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

Consola

  1. Aceda à página Transferências de dados na Google Cloud consola.

    Aceda a Transferências de dados

  2. Clique em Criar transferência.

  3. Na página Criar transferência:

    • Na secção Tipo de origem, em Origem, escolha Google Play.

      Origem da transferência

    • Na secção Nome da configuração de transferência, em Nome a apresentar, introduza um nome para a transferência de dados, como My Transfer. O nome da transferência pode ser qualquer valor que lhe permita identificar a transferência se precisar de a modificar mais tarde.

      Nome da transferência

    • Na secção Opções de programação:

      • Para Frequência de repetição, escolha uma opção para a frequência de execução da transferência de dados. Se selecionar Dias, indique uma hora válida em UTC.
      • Se aplicável, selecione Começar agora ou Começar à hora definida e indique uma data de início e um tempo de execução.
    • Na secção Definições de destino, para Conjunto de dados de destino, escolha o conjunto de dados que criou para armazenar os seus dados.

      Conjunto de dados de transferência

    • Na secção Detalhes da origem de dados:

      • Para o contentor do Cloud Storage, introduza o ID do seu contentor do Cloud Storage.
      • Para Sufixo da tabela, introduza um sufixo, como MT (para My Transfer).

      Detalhes da origem do Google Play

    • No menu Conta de serviço, selecione uma conta de serviço nas contas de serviço associadas ao seu Google Cloud projeto. Pode associar uma conta de serviço à transferência de dados em vez de usar as suas credenciais de utilizador. Para mais informações sobre a utilização de contas de serviço com transferências de dados, consulte o artigo Utilize contas de serviço.

      • Se iniciou sessão com uma identidade federada, é necessária uma conta de serviço para criar uma transferência de dados. Se tiver iniciado sessão com uma Conta Google, uma conta de serviço para a transferência é opcional.
      • A conta de serviço tem de ter as autorizações necessárias.
    • (Opcional) Na secção Opções de notificação:

      • Clique no botão para ativar as notificações por email. Quando ativa esta opção, o administrador da transferência recebe uma notificação por email quando uma execução de transferência falha.
      • Em Selecionar um tópico do Pub/Sub, escolha o nome do tópico ou clique em Criar um tópico. Esta opção configura notificações executadas pelo Pub/Sub para a transferência.
  4. Clique em Guardar.

bq

Introduza o comando bq mk e forneça a flag de criação de transferência — --transfer_config. Os seguintes indicadores também são obrigatórios:

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

Onde:

  • project_id é o ID do seu projeto. Se --project_id não for especificado, é usado o projeto predefinido.
  • dataset é o conjunto de dados de destino para a configuração de transferência.
  • name é o nome a apresentar da configuração de transferência. O nome da transferência de dados pode ser qualquer valor que lhe permita identificar a transferência se precisar de a modificar mais tarde.
  • parameters contém os parâmetros da configuração de transferência criada no formato JSON. Por exemplo: --params='{"param":"param_value"}'. Para o Google Play, tem de fornecer os parâmetros bucket e table_suffix. bucket é o contentor do Cloud Storage que contém os ficheiros de relatórios do Google Play.
  • data_source é a origem 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 deve ser propriedade do mesmo project_id usado para criar a transferência e deve ter todas as autorizações necessárias.

Por exemplo, o comando seguinte cria uma transferência de dados do Google Play denominada My Transfer usando o contentor do Cloud Storage pubsite_prod_rev_01234567890987654321 e o conjunto de dados de destino mydataset. A transferência de dados é criada no projeto predefinido:

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

Na primeira vez que executar o comando, recebe uma mensagem semelhante à seguinte:

[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 comandos.

API

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

Java

Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure 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());
    }
  }
}

Resolva problemas com a configuração da transferência do Google Play

Se estiver a ter problemas com a configuração da transferência de dados, consulte o artigo Resolução de problemas da configuração da transferência do Serviço de transferência de dados do BigQuery.

Consultar os seus dados

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

Se consultar as tabelas diretamente em vez de usar as vistas geradas automaticamente, tem de usar a pseudocoluna _PARTITIONTIME na consulta. Para mais informações, consulte o artigo Consultar tabelas particionadas.

Preços

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

Depois de os dados serem transferidos para o BigQuery, aplicam-se os preços padrão de armazenamento e consultas do BigQuery.

O que se segue?