Google Play 転送

BigQuery Data Transfer Service for Google Play コネクタを使用すると、Google Play レポートデータを定期的に読み込むジョブのスケジュールと管理を自動化できます。

サポートされるレポート

BigQuery Data Transfer Service for Google Play は、次の月次レポート オプションをサポートしています。

詳細レポート

集計レポート

Google Play レポートがどのように BigQuery テーブルに変換されるかについては、Google Play レポートの変換をご覧ください。

レポート オプション サポート
サポートされている API バージョン

なし

繰り返しの頻度

毎日、データ転送が最初に作成される時刻(デフォルト)

時刻を構成できます。

更新ウィンドウ

過去 7 日間

構成不可

最大バックフィル期間

制限なし

Google Play にはデータ保持期間の制限はありませんが、BigQuery Data Transfer Service には、1 回のバックフィルでリクエストできる日数に制限があります。バックフィルの詳細については、バックフィルの設定をご覧ください。

Google Play 転送からのデータ取り込み

Google Play から BigQuery にデータを転送すると、データは日付でパーティション分割された BigQuery テーブルに読み込まれます。データが読み込まれるテーブル パーティションは、データソースの日付に対応します。同じ日付の複数の転送をスケジュールすると、BigQuery Data Transfer Service により、対象の日付のパーティションが最新のデータで上書きされます。同じ日に複数回の転送やバックフィルを実行しても、データは重複せず、他の日付のパーティションに対する影響はありません。

更新ウィンドウ

更新ウィンドウとは、データ転送が行われたときにデータ転送でデータが取得される日数です。たとえば、更新ウィンドウが 3 日であり、毎日転送が行われる場合、BigQuery Data Transfer Service は過去 3 日間のソーステーブルからすべてのデータを取得します。この例では、毎日転送が発生すると、BigQuery Data Transfer Service は、当日のソーステーブルのデータのコピーを含む新しい BigQuery 宛先テーブル パーティションを作成し、バックフィル実行を自動的にトリガーして、過去 2 日間のソーステーブルのデータで BigQuery 宛先テーブル パーティションを更新します。自動トリガーされたバックフィル実行は、BigQuery Data Transfer Service コネクタで増分更新がサポートされているかどうかに応じて、BigQuery の宛先テーブルを上書きするか、増分更新します。

データ転送を初めて実行する際に、更新ウィンドウ内で利用可能なすべてのソースデータを取得します。たとえば、更新ウィンドウが 3 日であり、データ転送を初めて実行する場合は、BigQuery Data Transfer Service によって 3 日以内のすべてのソースデータが取得されます。

更新ウィンドウは TransferConfig.data_refresh_window_days API フィールドにマッピングされます。

更新ウィンドウの期間外のデータ(過去のデータなど)を取得する場合や、転送の停止やギャップからデータを復元する場合は、バックフィル実行を開始またはスケジュールできます。

制限事項

  • データ移転をスケジュールできる最短の頻度は 24 時間に 1 回です。デフォルトでは、転送を作成したときに転送が開始されます。ただし、転送を構成するときに、転送の開始時間を構成できます。
  • BigQuery Data Transfer Service は、Google Play の転送中の増分データ転送をサポートしていません。データ転送の日付を指定すると、その日付で使用できるすべてのデータが転送されます。

始める前に

Google Play データ転送を作成する前に、以下を行います。

  • BigQuery Data Transfer Service を有効にするために必要なすべての操作が完了していることを確認します。
  • Google Play データを保存する BigQuery データセットを作成します。
  • Cloud Storage バケットを確認します。
    1. Google Play Console[レポートをダウンロード] をクリックし、[レビュー]、[統計情報]、または [金融] を選択します。
    2. Cloud Storage バケットの ID をコピーするには、Cloud Storage URI をコピー」をクリックします。バケット ID は gs:// で始まります。たとえば、レビュー レポートの場合、ID は次のようになります。
      gs://pubsite_prod_rev_01234567890987654321/reviews
    3. Google Play データ転送では、gs:///reviews との間にある一意の ID のみをコピーする必要があります。
      pubsite_prod_rev_01234567890987654321
  • Pub/Sub の転送実行通知を設定する場合は、pubsub.topics.setIamPolicy 権限が必要です。メール通知を設定するだけの場合、Pub/Sub の権限は必要ありません。詳細については、BigQuery Data Transfer Service の実行通知をご覧ください。

必要な権限

  • BigQuery: データ転送を作成するユーザーに、BigQuery で次の権限が付与されていることを確認します。

    • データ転送を作成する bigquery.transfers.update 権限
    • bigquery.datasets.getbigquery.datasets.update の両方(抽出先データセットに対する権限)

    bigquery.transfers.update 権限、bigquery.datasets.update 権限、bigquery.datasets.get 権限は、IAM 事前定義ロール bigquery.admin に含まれています。BigQuery Data Transfer Service での IAM ロールについて、詳しくはアクセス制御をご覧ください。

  • Google Play: Google Play で次の権限が付与されていることを確認します。

    Google Cloud チームには、ユーザーに代わって Google Play ファイルを生成したり、このようなファイルに対するアクセス権を付与したりする権限はありません。Google Play ファイルのアクセスについては、Google Play サポートへのお問い合わせをご覧ください。

Google Play の転送を設定する

Google Play データ転送を設定するには以下が必要です。

  • Cloud Storage バケット:Cloud Storage バケットを確認する手順は、始める前にで説明されています。Cloud Storage バケットの名前は pubsite_prod_rev で始まります。(例: pubsite_prod_rev_01234567890987654321)。
  • テーブル サフィックス: 同じデータセットに読み込まれるすべてのデータソース用のわかりやすい名前です。このサフィックスは、別の転送によって同じテーブルへの書き込みが行われないようにするために使用されます。テーブル サフィックスは、同じデータセットにデータを読み込むすべての転送で一意である必要があり、生成されるテーブル名の長さが短くなるように、サフィックスは短くする必要があります。

Google Play データ転送を設定するには:

コンソール

  1. Google Cloud コンソールの [データ転送] ページに移動します。

    [データ転送] に移動

  2. [転送を作成] をクリックします。

  3. [転送の作成] ページで、次の操作を行います。

    • [ソースタイプ] セクションで、[ソース] として [Google Play] を選択します。

      転送のソース

    • [転送構成名] セクションの [表示名] に、データ転送の名前(例: My Transfer)を入力します。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。

      転送名

    • [スケジュール オプション] セクションで:

      • [繰り返しの頻度] で、データ転送を実行する頻度のオプションを選択します。[日数] を選択した場合は、有効な時刻を UTC で入力します。

        • 時間
        • 日数
        • オンデマンド
      • 必要に応じて、[すぐに開始可能] を選択するか、[設定した時刻に開始] を選択して開始日と実行時間を指定します。

    • [転送先の設定] セクションの [宛先データセット] で、データを保存するために作成したデータセットを選択します。

      転送データセット

    • [データソースの詳細] セクションで、次の操作を行います。

      • [Cloud Storage バケット] に、Cloud Storage バケットの ID を入力します。
      • [Table suffix] にサフィックスを入力します(「My Transfer」の場合は「MT」など)。

        Google Play ソースの詳細

    • [サービス アカウント] メニューで、Google Cloud プロジェクトに関連付けられたサービス アカウントからサービス アカウントを選択します。ユーザー認証情報を使用する代わりに、サービス アカウントをデータ転送に関連付けることができます。データ転送でサービス アカウントを使用する方法の詳細については、サービス アカウントの使用をご覧ください。

      • フェデレーション ID でログインした場合、データ転送を作成するにはサービス アカウントが必要です。Google アカウントでログインした場合、転送用のサービス アカウントは省略可能です。
      • サービス アカウントには必要な権限が付与されている必要があります。
    • (省略可)[通知オプション] セクションで、次の操作を行います。

      • 切り替えボタンをクリックしてメール通知を有効にします。このオプションを有効にすると、転送の実行が失敗した場合、転送管理者にメール通知が送信されます。
      • [Pub/Sub トピックを選択してください] で、トピック名を選択するか、[トピックを作成する] をクリックします。このオプションで、Pub/Sub の転送実行通知を構成します。
  4. [保存] をクリックします。

bq

bq mk コマンドを入力して、転送作成フラグ --transfer_config を指定します。次のフラグも必要です。

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

ここで

  • project_id は、プロジェクト ID です。--project_id を指定しない場合は、デフォルトのプロジェクトが使用されます。
  • dataset は、転送構成の抽出先データセットです。
  • name は、転送構成の表示名です。データ転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。
  • parameters には、作成される転送構成のパラメータを JSON 形式で指定します。例: --params='{"param":"param_value"}'。Google Play では、bucket パラメータと table_suffix パラメータを指定する必要があります。bucket は、Play レポート ファイルを格納する Cloud Storage バケットです。
  • data_source は、データソースです。play
  • service_account_name は、データ転送の認証に使用されるサービス アカウント名です。サービス アカウントは、転送の作成に使用した project_id が所有している必要があります。また、必要な権限がすべて付与されている必要があります。

たとえば、次のコマンドは、Cloud Storage バケット pubsite_prod_rev_01234567890987654321 とターゲット データセット mydataset を使用して、My Transfer という名前の Google Play データ転送を作成します。このデータ転送はデフォルトのプロジェクトで作成されます。

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

コマンドの初回実行時に、次のようなメッセージが表示されます。

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

メッセージの指示に従って、認証コードをコマンドラインに貼り付けます。

API

projects.locations.transferConfigs.create メソッドを使用して、TransferConfig リソースのインスタンスを指定します。

Java

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

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());
    }
  }
}

Google Play 転送設定のトラブルシューティング

データ転送を設定する際に問題が発生した場合は、BigQuery Data Transfer Service 転送設定のトラブルシューティングをご覧ください。

データに対するクエリを実行する

データが BigQuery に転送されると、取り込み時間パーティション分割テーブルにそのデータが書き込まれます。詳細については、パーティション分割テーブルの概要をご覧ください。

自動生成されたビューを使用せずに、テーブルでクエリを直接実行する場合は、そのクエリで _PARTITIONTIME 疑似列を使用する必要があります。詳細については、パーティション分割テーブルのクエリをご覧ください。

料金

Google Play データ転送の料金については、料金ページをご覧ください。

データが BigQuery に転送されると、BigQuery のストレージクエリの標準料金が適用されます。

次のステップ

  • Google Play レポートがどのように BigQuery に転送されるかについては、Google Play レポートの変換をご覧ください。
  • BigQuery Data Transfer Service の概要については、BigQuery Data Transfer Service の概要をご覧ください。
  • 転送構成に関する情報の取得、転送構成の一覧表示、転送の実行履歴の表示など、転送の使用方法については、転送の操作をご覧ください。