Treasure Data の data.ai コネクタを使用して、data.ai(旧 AppAnnie)データソースオブジェクトを Treasure Data にインポートします。
- Treasure Data の基本的な知識
- data.ai(旧 AppAnnie)の基本的な知識
data.ai には 2 種類のレート制限があります。
- 1 分あたりの呼び出し数
- 1 日あたりのユーザーごとの呼び出し数制限
1 分あたりの呼び出し制限は一定秒数後に自動的に更新されますが、1 日あたりの呼び出し制限は毎日 00:00 PST に更新されます。
同じ data.ai アカウントで複数の転送を行う場合、アカウントの合計制限以下である限り、calls_per_minute_limit と calls_per_day_limit の設定を使用して、各 data.ai 転送のレート制限使用量を制御できます。たとえば、アカウントのクォータが 100 呼び出し/分、10000 呼び出し/日である場合、2 つの転送(たとえば、製品販売データと製品使用データ)を作成する場合、製品販売転送に 50 cpm と 5000 cpd を使用し、残り(50 cpm と 5000 cpd)を製品使用転送に使用できます。
- 新しいConnectionを作成する
Treasure Dataでは、クエリを実行する前にデータ接続を作成し、設定する必要があります。データ接続の一部として、統合にアクセスするための認証情報を提供します。
- TD Consoleを開きます。
- Integrations Hub > Catalogに移動します。
- Catalog画面の右端にある検索アイコンをクリックし、data.aiと入力します。
- data.aiコネクタにカーソルを合わせ、Create Authenticationを選択します。

次のダイアログが開きます。 
Treasure Dataとdata.aiを認証する方法は、data.aiからインポートするためのデータコネクタを有効にする手順に影響します。
Treasure Dataは以下をサポートしています:
- API Key
- OAuth
data.aiのAPI Key情報を入力し、Continueを選択します。
OAuthはUSリージョンでのみ利用可能です。
- 「Authentication Method」ドロップダウンから「OAuth」を選択して、OAuth 2を使用してdata.aiアカウントに接続します。
- OAuth認証方法を選択したら、Click hereを選択して新しいアカウントに接続します。新しいウィンドウからdata.aiアカウントにログインします:
- Data ConnectorとTreasure Dataアプリへのアクセスを許可します:
- Catalogにリダイレクトされます。新しいconnectionを作成するステップを繰り返し、新しいOAuth connectionを選択します。

接続フォームを完了したら、Continueを選択し、connectionに名前を付けます:

connectionを作成すると、自動的にAuthenticationsタブに移動します。作成したconnectionを探し、New Transferを選択します。
次のダイアログが開きます。詳細を入力し、Nextを選択します。

次に、次のダイアログと同様のデータのPreviewが表示されます。設定を変更する場合はAdvanced Settingsを選択し、そうでない場合はNextを選択します。

エラー時のスキップやレート制限などのオプションを変更する場合は、Advanced Settingsで行います:

次のダイアログに示すように、データを転送するdatabaseとtableを選択します:

次のダイアログを使用してデータ転送のスケジュールを指定し、Start Transferを選択します:

My Input Transfersタブの下に、進行中の新しいデータ転送がリストされ、対応するジョブがJobsセクションにリストされているのが確認できます。
最新のTD Toolbeltをインストールできます。
$ td --version
0.15.0data.aiアカウントのアクセス情報を含む設定ファイル(例: load.yml)を次のように準備します:
in:
type: app_data.ai
apikey: xxxxxxxx
target: product_sales (required, see Appendix B)
breakdown_sales: date+country+iap (optional, see Appendix C)
fetch_type: shared_products (optional, default: `both`, see Appendix D)
start_date: 2017-01-01 (optional but required here as breakdown contains `iap`)
end_date: 2017-02-01 (optional, default: current date)
currency: USD (optional, default: USD, see Appendix E)
skip_on_invalid_records: true (optional, default: false)
calls_per_minute_limit: 15 (optional, 30 by default, see Appendix F)
calls_per_day_limit: 800 (optional, 1000 by default, see Appendix F)
out:
mode: replaceこの例では、data.aiアカウントデータソースをダンプします:
apikey: data.ai apiKey。
target: インポートするdata.aiエンティティオブジェクト。
- 利用可能なターゲットのリストについては、Appendix: Appendix: Available Targetsを参照してください。
breakdown: 製品の売上または使用データを取得するための内訳タイプ。
- このフィールド名は、選択されたターゲットに応じて、breakdown_salesまたはbreakdown_usageに変更されます。
- 使用方法と利用可能な内訳のリストについては、Appendix: Available Breakdownsを参照してください。
fetch_type: インポートする製品のソース(接続されたアカウントからの製品、共有経由の製品、またはその両方)。
- 使用方法と利用可能なfetch_typeのリストについては、Appendix: Available Fetch Typesを参照してください。
start_date: 製品データをインポートする開始日(yyyy-MM-dd)。このフィールドは、製品使用(targetがproduct_usage)または製品売上(targetがproduct_sales)をアプリ内課金の内訳(breakdownにiapを含む)で取得する場合に必須です。
end_date: 製品データをインポートする終了日(yyyy-MM-dd)。このフィールドはオプションであり、現在の日付に基づいてstart_dateから最大60日間に自動調整されます。
currency: データが表示される通貨。
- 利用可能な通貨のリストについては、Appendix: Available Currenciesを参照してください。
skip_on_invalid_records: エラー(無効なJSON、サポートされていないデータなど)を無視して、レコードの取得を続行します。(デフォルトはfalse)
calls_per_minute_limit / calls_per_day_limit: 1分あたり/1日あたりのAPI呼び出し数の制限
- これらのオプションの使用方法については、Appendix: Rate Limitsを参照してください。
利用可能なoutモードの詳細については、Appendix: Modes for out Pluginを参照してください。
| Target | Description |
|---|---|
| account_connections | 接続されたアカウント |
| connected_products | 接続されたアカウントからの製品 |
| shared_products | 外部アカウントから共有された製品 |
| product_sales | 製品販売データ |
| product_usage | 製品使用データ |
| app_details | アプリケーション詳細 |
このフィールドは、製品販売または製品使用のインポートでのみ利用できます。
- ターゲットが product_sales の場合、内訳フィールド名は breakdown_sales です
- ターゲットが product_usage の場合、内訳フィールド名は breakdown_usage です
| Breakdown | Product Sales | Product Usage |
|---|---|---|
| country | x | x |
| country+iap | x | |
| country+device | x | |
| date | x | x |
| date+country | x | x |
| date+country+device | x | |
| date+country+iap | x | |
| date+device | x | |
| date+iap | x | |
| date+type+iap | x | |
| device | x | |
| iap | x |
このフィールドは、製品販売、製品使用、アプリ詳細のインポートで利用できます。
| Source | Description |
|---|---|
| connected_products | 接続されたアカウントからの製品データのみをインポート |
| shared_products | 共有リストからの製品データのみをインポート |
| both | 両方の製品ソースをインポート |
このフィールドは、製品販売のインポートでのみ利用できます。必要に応じて、詳細は data.ai サポートにお問い合わせください。
| Currency Code | Symbol | Full Name of Currency |
|---|---|---|
| AUD | A$ | Australian Dollar |
| BGN | > лв | Bulgarian lev |
| BRL | R$ | Brazilian real |
| CAD | C$ | Canadian Dollar |
| CHF | CHF | Swiss Franc |
| CNY | ¥ | Chinese Yuan |
| CZK | Kč | Czech koruna |
| DKK | kr | Danish krone |
| EEK | kr | Estonian kroon |
| EUR | € | Euro |
| GBP | £ | Pound sterling |
| HKD | HK$ | Hong Kong dollar |
| HRK | kn | Croatian kuna |
| HUF | Ft | Hungarian forint |
| IDR | Rp | Indonesian rupiah |
| ILS | ₪ | Israeli new shekel |
| INR | ₹ | Indian rupee |
| JPY | ¥ | Japanese yen |
| KRW | ₩ | South Korean won |
| LTL | Lt | Lithuanian litas |
| LVL | Ls | Latvian lats |
| MXN | Mex$ | Mexican peso |
| MYR | RM | Malaysian ringgit |
| NOK | kr | Norwegian krone |
| NZD | $ | New Zealand dollar |
| PHP | ₱ | Philippine peso |
| PLN | zł | Polish złoty |
| RON | lei | Romanian new leu |
| RUB | p. | Russian rouble |
| SEK | kr | Swedish krona/kronor |
| SGD | S$ | Singapore dollar |
| THB | ฿ | Thai baht |
| TRY | TL | Turkish lira |
| TWD | NT$ | New Taiwan dollar |
| USD | $ | United States dollar |
| ZAR | R | South African rand |
td connector:preview コマンドを使用して、インポートされるデータをプレビューできます。
$ td connector:preview load.yml
+-----------------+---------------------+-----------------+----
| account_id:long | account_name:string | vertical:string | ...
+-----------------+---------------------+-----------------+----
| 42023 | "Hello" | apps |
| 42045 | "World" | apps |
+-----------------+---------------------+-----------------+----ロードジョブを送信します。データサイズによっては数時間かかる場合があります。ユーザーは、データが保存されるデータベースとテーブルを指定する必要があります。
Treasure Data のストレージは時間で分割されているため、--time-column オプションを指定することを推奨します(Treasure Data でのデータパーティショニング も参照してください)。オプションが指定されていない場合、Data Connector は最初の long または timestamp カラムをパーティショニング時間として選択します。--time-column で指定されるカラムのタイプは、long または timestamp タイプのいずれかである必要があります。
データに時間カラムがない場合は、add_time フィルターオプションを使用して追加できます。詳細は インテグレーションの add_time フィルタープラグイン をご覧ください。
$ td connector:issue load.yml --database td_sample_db --table td_sample_table --time-column updated_date上記のコマンドは、データベース(td_sample_db) と テーブル(td_sample_table) がすでに作成されていることを前提としています。TD にデータベースまたはテーブルが存在しない場合、このコマンドは成功しないため、手動で データベースとテーブルを作成するか、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" に割り当てることができます。
定期的な data.ai インポートのために、定期的な Data Connector の実行をスケジュールできます。私たちは高可用性を確保するためにスケジューラーを慎重に設定しています。この機能を使用することで、ローカルデータセンターで cron デーモンを実行する必要がなくなります。
td connector:create コマンドを使用して新しいスケジュールを作成できます。スケジュールの名前、cron 形式のスケジュール、データが保存されるデータベースとテーブル、および Data Connector 設定ファイルが必要です。
$ td connector:create \
daily_dataai_import \
"10 0 * * *" \
td_sample_db \
td_sample_table \
load.ymlcron パラメータは、@hourly、@daily、@monthly の3つのオプションも使用できます。 |