このData Connectorを使用すると、ApptopiaデータソースオブジェクトをTreasure Dataにインポートできます。
- Treasure Dataの基本的な知識
- Apptopiaの基本的な知識
Treasure Dataでは、クエリを実行する前にデータ接続を作成して設定する必要があります。データ接続の一部として、連携にアクセスするための認証情報を提供します。
- TD Consoleを開きます。
- Integrations Hub > Catalogに移動します。
- Catalog画面の右端にある検索アイコンをクリックし、Apptopiaと入力します。
- Apptopiaコネクターの上にマウスを置き、Create Authenticationを選択します。
以下のダイアログが開きます。 
ApptopiaのClient IDとSecret Keyの情報を編集します。次にContinueをクリックします。接続に名前を付け、Doneをクリックします。
Create Connectionを選択すると、Authenticationsタブに移動します。作成した接続を探し、New Transferを選択します。

以下のダイアログが開きます。詳細を編集し、Nextを選択します。

データをプレビューします。何か変更したい場合は、Advanced Settingsを選択するか、Nextを選択します。

Advanced Settingsでは、レート制限などのオプションを変更できます:

以下のダイアログに示されているように、データを転送するデータベースとテーブルを選択します:

データ転送のスケジュールを指定し、Start Transferを選択します:

新しいデータ転送が進行中であることがMy Input Transfersタブに表示され、対応するジョブがJobsセクションに表示されます。
最新のTD Toolbeltをインストールできます。
$ td --version
0.15.0以下のように、Apptopiaアカウントのアクセス情報を含む設定ファイル(例: load.yml)を準備します:
in:
type: apptopia
client: xxxxxxxx
secret: xxxxxxxx
target: publisher_performance (必須、付録Bを参照)
store: itunes_connect (必須、付録Cを参照)
start_date: 2017-01-01 (`category`および`country`以外のすべてのtargetに必須)
end_date: 2017-02-01 (`category`および`country`以外のすべてのtargetに必須)
requests_per_minute_limit: 300 (オプション、デフォルトは1000、付録Fを参照)
out:
mode: replaceこの例では、Apptopia Publisher Performanceデータソースを示しています:
client: ApptopiaクライアントID。
secret: Apptopiaシークレット。
target: インポートするApptopiaエンティティオブジェクト。
- 利用可能なtargetのリストについては、付録を参照してください。
store: データを取得するモバイルマーケット
- 利用可能なstoreのリストについては、付録を参照してください。
start_date: どの日付(yyyy-MM-dd)からプロダクトデータをインポートするか。このフィールドは、プロダクト使用状況(targetがproduct_usage)またはプロダクト売上(targetがproduct_sales)をアプリ内課金の内訳(breakdownにiapを含む)とともに取得する場合に必須です。
end_date: どの日付(yyyy-MM-dd)までプロダクトデータをインポートするか。このフィールドはオプションで、現在の日付によって制限されたstart_dateから最大60日間に自動調整されます。
requests_per_minute_limit: 1分あたりのAPI呼び出し数を制限
- これらのオプションの使用方法については、付録を参照してください
利用可能なoutモードの詳細については、付録を参照してください
td connector:previewコマンドを使用して、インポートされるデータをプレビューできます。
$ td connector:preview load.yml
+------------+------------------+--------------------+----
| id:string | store:string | country_iso:string | ...
+------------+------------------+--------------------+----
| 420233213 | "itunes_connect" | US |
| jp.td.app | "google_play" | JP |
+------------+------------------+--------------------+----ロードジョブを送信します。データサイズによっては数時間かかる場合があります。ユーザーは、データが保存されるdatabaseとtableを指定する必要があります。
Treasure Dataのストレージは時間でパーティション化されているため(データパーティショニングも参照)、--time-columnオプションを指定することをお勧めします。このオプションが指定されない場合、Data Connectorは最初のlongまたはtimestamp列をパーティショニング時間として選択します。--time-columnで指定される列の型は、longまたはtimestamp型のいずれかである必要があります。 データに時刻カラムがない場合は、add_timeフィルターオプションを使用して追加できます。詳細については、add_time Filter Plugin for Integrationsを参照してください。
$ td connector:issue load.yml --database td_sample_db --table td_sample_table --time-column updated_date上記のコマンドは、*database(td_sample_db)とtable(td_sample_table)*が既に作成されていることを前提としています。データベースまたはテーブルがTDに存在しない場合、コマンドは成功しませんので、Database and Table Managementを使用してデータベースとテーブルを作成するか、td connector:issueコマンドで--auto-create-tableオプションを使用してデータベースとテーブルを自動作成してください。
$ td connector:issue load.yml --database td_sample_db --table td_sample_table --time-column updated_date --auto-create-table「--time-column」オプションで、Time Formatカラムを「Partitioning Key」に割り当てることができます。
定期的なApptopiaインポートのために、Data Connectorの定期実行をスケジュールできます。高可用性を確保するために、スケジューラーを慎重に設定しています。この機能を使用することで、ローカルデータセンターでcronデーモンを使用する必要がなくなります。
新しいスケジュールは、td connector:createコマンドを使用して作成できます。スケジュール名、cron形式のスケジュール、データが保存されるデータベースとテーブル、およびData Connector設定ファイルが必要です。
td connector:create \
daily_apptopia_import \
"10 0 * * *" \
td_sample_db \
td_sample_table \
load.ymlcronパラメータは、@hourly、@daily、@monthlyのオプションも受け付けます。 デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。-tまたは--timezoneオプションを使用して、特定のタイムゾーンでスケジュールを設定できます。--timezoneオプションは、'Asia/Tokyo'、'America/Los_Angeles'などの拡張タイムゾーン形式のみをサポートします。PST、CSTなどのタイムゾーンの略語はサポートされておらず、予期しないスケジュールになる可能性があります。
td connector:listでスケジュールされたエントリのリストを表示できます。
$ td connector:list
+-----------------------+--------------+----------+-------+--------------+-----------------+-----------------------------+
| Name | Cron | Timezone | Delay | Database | Table | Config |
+-----------------------+--------------+----------+-------+--------------+-----------------+-----------------------------+
| daily_apptopia_import | 10 0 * * * | UTC | 0 | td_sample_db | td_sample_table | {"type"=>"apptopia", ... } |
+-----------------------+--------------+----------+-------+--------------+-----------------+-----------------------------+td connector:showは、スケジュールエントリの実行設定を表示します。
% td connector:show daily_apptopia_import
Name : daily_apptopia_import
Cron : 10 0 * * *
Timezone : UTC
Delay : 0
Database : td_sample_db
Table : td_sample_tabletd connector:historyは、スケジュールエントリの実行履歴を表示します。各実行の結果を調査するには、td job jobidを使用します。
% td connector:history daily_apptopia_import
+--------+---------+---------+--------------+-----------------+----------+---------------------------+----------+
| JobID | Status | Records | Database | Table | Priority | Started | Duration |
+--------+---------+---------+--------------+-----------------+----------+---------------------------+----------+
| 578066 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-18 00:10:05 +0000 | 160 |
| 577968 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-17 00:10:07 +0000 | 161 |
| 577914 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-16 00:10:03 +0000 | 152 |
| 577872 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-15 00:10:04 +0000 | 163 |
| 577810 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-14 00:10:04 +0000 | 164 |
| 577766 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-13 00:10:04 +0000 | 155 |
| 577710 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-12 00:10:05 +0000 | 156 |
| 577610 | success | 10000 | td_sample_db | td_sample_table | 0 | 2015-04-11 00:10:04 +0000 | 157 |
+--------+---------+---------+--------------+-----------------+----------+---------------------------+----------+
8 rows in settd connector:deleteは、スケジュールを削除します。
$ td connector:delete daily_apptopia_importload.ymlのoutセクションでファイルインポートモードを指定できます。
これはデフォルトモードで、レコードはターゲットテーブルに追加されます。
in:
...
out:
mode: appendこのモードは、ターゲットテーブルのデータを置き換えます。ターゲットテーブルに対して手動で行われたスキーマ変更は、このモードでは保持されます。
in:
...
out:
mode: replace| Target | Description |
|---|---|
| app_metadata | アプリケーションメタデータ |
| app_performance | アプリケーションパフォーマンス |
| app_ranks | アプリケーションランキング |
| app_sdks_metadata | アプリケーションSDKsメタデータ |
| category | カテゴリーのリスト |
| category_rank_lists | 各カテゴリーのトップチャートの生ランク |
| category_featured_lists | 各カテゴリーの注目アプリケーション |
| category_new_releases | 各カテゴリーの新しいアプリリリース |
| country | サポートされている国 |
| publisher_metadata | パブリッシャーメタデータ |
| publisher_performance | パブリッシャーパフォーマンス |
| sdk_metadata | SDKメタデータ |
| Store | Description |
|---|---|
| itunes_connect | Apple Store |
| google_play | Google Play Market |
Apptopiaには、1分あたりのリクエスト数のレート制限があります。このレート制限は、一定の秒数後に自動的に更新されます。
同じApptopiaアカウントで複数の転送がある場合、アカウントの合計制限を超えない限り、詳細設定のrequests_per_minute_limitを使用して各転送のレート制限使用量を制御できます。例えば、アカウントに1000コール/分のクォータがある場合、app_performanceとpublisher_performanceターゲットの2つの転送を作成する場合、app_performance転送に600 rpmを使用し、残り(400 rpm)をpublisher_performance転送に使用できます。