# Apptopiaインポート連携 このData Connectorを使用すると、ApptopiaデータソースオブジェクトをTreasure Dataにインポートできます。 # 前提条件 - Treasure Dataの基本的な知識 - Apptopiaの基本的な知識 # TD Consoleを使用する ## 新しい接続を作成する Treasure Dataでは、クエリを実行する前にデータ接続を作成して設定する必要があります。データ接続の一部として、連携にアクセスするための認証情報を提供します。 1. **TD Console**を開きます。 2. **Integrations Hub** > **Catalog**に移動します。 3. Catalog画面の右端にある検索アイコンをクリックし、**Apptopia**と入力します。 4. Apptopiaコネクターの上にマウスを置き、**Create Authentication**を選択します。 ![](/assets/apptopia.9ddc7ce1ae77c85440d757040c84ab6e49a1a6fab32da251232a2a651058ed72.8388fc3e.png) 以下のダイアログが開きます。 ![](/assets/apptopianewauth.f2b3ad10b2e353619c8cc1e8748a3e2d1640ac6c8b05ec6d549b67cf73a6e1d9.8388fc3e.png) ApptopiaのClient IDとSecret Keyの情報を編集します。次に**Continue**をクリックします。接続に名前を付け、**Done**をクリックします。 ## 新しい転送を作成する **Create Connection**を選択すると、[Authentications](https://console.treasuredata.com/connections/list)タブに移動します。作成した接続を探し、**New Transfer**を選択します。 ![](/assets/image-20191015-161639.bdda5cc998dc7db7ec75514a82f89e4c5d400ed58db231295e82c04db6131fc7.8388fc3e.png) 以下のダイアログが開きます。詳細を編集し、**Next**を選択します。 ![](/assets/image-20191015-163659.2022b5f920cfbf4dac2ddcd1a0a56f6ab70c9410a95627d8a84e9634e0835749.8388fc3e.png) データをプレビューします。何か変更したい場合は、**Advanced Settings**を選択するか、**Next**を選択します。 ![](/assets/image-20191015-163743.30c6b77b3a6301ffd108ccc4fe15d634ed4d51eb860d1e8e38759e8ad54ee715.8388fc3e.png) Advanced Settingsでは、レート制限などのオプションを変更できます: ![](/assets/image-20191015-163831.90d9866b4c0d6f38c1e413bf98534304a5e7cc4eb0e045e705034ce4bcc87b0b.8388fc3e.png) 以下のダイアログに示されているように、データを転送するデータベースとテーブルを選択します: ![](/assets/image-20191015-163913.64b2f05cd549712d069bd9e85644d603551cc71f7f6c99d7944a2d9af76def74.8388fc3e.png) データ転送のスケジュールを指定し、**Start Transfer**を選択します: ![](/assets/image-20191015-163952.374901cc8f3d6e71865fed01e9a1fbe9dffb439e2c25819a2439054f075fbdf1.8388fc3e.png) 新しいデータ転送が進行中であることがMy Input Transfersタブに表示され、対応するジョブがJobsセクションに表示されます。 # コマンドライン ## 'td' command v0.11.9以降をインストールする 最新の[TD Toolbelt](https://toolbelt.treasuredata.com/)をインストールできます。 ``` $ td --version 0.15.0 ``` ## 設定ファイルの作成 以下のように、Apptopiaアカウントのアクセス情報を含む設定ファイル(例: load.yml)を準備します: ```yaml 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のリストについては、[付録](/ja/int/apptopia-import-integration#h1__1835053169)を参照してください。 - store: データを取得するモバイルマーケット - 利用可能なstoreのリストについては、[付録](/ja/int/apptopia-import-integration#h1__1835053169)を参照してください。 - 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呼び出し数を制限 - これらのオプションの使用方法については、[付録](/ja/int/apptopia-import-integration#h1__1835053169)を参照してください 利用可能な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のストレージは時間でパーティション化されているため([データパーティショニング](https://docs.treasuredata.com/smart/project-product-documentation/data-partitioning-in-treasure-data)も参照)、--time-columnオプションを指定することをお勧めします。このオプションが指定されない場合、Data Connectorは最初のlongまたはtimestamp列をパーティショニング時間として選択します。--time-columnで指定される列の型は、longまたはtimestamp型のいずれかである必要があります。 データに時刻カラムがない場合は、add_timeフィルターオプションを使用して追加できます。詳細については、[add_time Filter Plugin for Integrations](https://docs.treasuredata.com/smart/project-product-documentation/add_time-filter-function)を参照してください。 ``` $ 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](https://docs.treasuredata.com/smart/project-product-documentation/data-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設定ファイルが必要です。 ```bash td connector:create \ daily_apptopia_import \ "10 0 * * *" \ td_sample_db \ td_sample_table \ load.yml ``` `cron`パラメータは、`@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_table ``` td 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 set ``` ## スケジュールの削除 td connector:deleteは、スケジュールを削除します。 ``` $ td connector:delete daily_apptopia_import ``` # 付録 ## Outプラグインのモード load.ymlのoutセクションでファイルインポートモードを指定できます。 ### append (デフォルト) これはデフォルトモードで、レコードはターゲットテーブルに追加されます。 ``` in: ... out: mode: append ``` ### replace (td 0.11.10以降) このモードは、ターゲットテーブルのデータを置き換えます。ターゲットテーブルに対して手動で行われたスキーマ変更は、このモードでは保持されます。 ``` 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転送に使用できます。