# Stripe Import Integration このData Connectorを使用すると、StripeオブジェクトをTreasure Dataにインポートできます。 ## 前提条件 - Treasure Dataの基本知識 - Stripeの基本知識 - (オプション) [Stripe Webhooks](https://stripe.com/docs/webhooks) ## TD Consoleの使用 ### 新しい接続の作成 Integrations Hub > Catalogに移動し、Stripeを検索して選択します。 ![](/assets/image-20191022-133322.f1708963c0ac8dd299ee959b769a54a39b15cf76356100d24b5893fbc65345b0.b009b112.png) OAuth認証方式をサポートしています: Stripe用の既存のOAuth接続を選択するか、**OAuth connection**の下にあるリンクを選択して新しい接続を作成します。 ![](/assets/image-20191022-133342.a875b907d8c2aa56d61c432ccee952f62378e7081eed99e525ab15cb1085af54.b009b112.png) ### 新しいOAuth接続の作成 Stripeアカウントにログインします: ![](/assets/image-20191022-133350.82d72fafa3becdba0d1fdc9d46f64755c0abebc282647bcb9c427f97d21a0f66.b009b112.png) **Treasure Data**アプリへのアクセスを許可します: ![](/assets/image-20191022-133409.e0bf18be978ea7127fcff40cc5b34d52ba8fd94d288614dbdcd6f329984a9519.b009b112.png) Integrations Hubにリダイレクトされます。新しい接続の作成を繰り返し、新しいOAuth接続を選択します。 ![](/assets/image-20191022-133418.35874dd688f32173c32059f02fc3361691877c27ccd171236e3ebb1338ebd154.b009b112.png) 内部テスト目的:Secret Key — 非推奨、OAuthに置き換えられました Stripe > Your Account > Account Settings > API KeysからLive Secret Keyを入力します。 ![](/assets/image-20191022-133427.774f5d51765bb957b76a6cab4a28facdff4a98609859a05cb29cabfab4844b06.b009b112.png) ### 新しい転送の作成 上記の接続を作成すると、自動的に[My Connections](https://console.treasuredata.com/connections/list)タブに移動します。作成した接続を探してNew Transferを選択します。インクリメンタルオプションはeventオブジェクトのみサポートされています。 ![](/assets/image-20191205-052042.d421627101de63282c5920ea15cd9600ec0e204a770542af27a0df7040f5743c.b009b112.png) 詳細を編集して`Next`を選択します。 ![](/assets/image-20191022-133440.1a99949fe468212897207154efde3446e64625b4288e7c39a0c7169c9d4befb2.b009b112.png) データをプレビューします。何か変更したい場合は、Advanced Settingsを選択し、そうでなければNextを選択します。 ![](/assets/image-20191022-133521.10a8b688daddbc643113e510c9f3f9d8189ee64c197f495294ef5c165fd5eaac.b009b112.png) 次のダイアログに従って、データを転送するデータベースとテーブルを選択します: ![](/assets/image-20191022-133627.f4a5e23e14b8d06eca32a7cae13a648a5e9c9ba0aa8d4de9a45ef94a7a262064.b009b112.png) 以下のダイアログを使用してデータ転送のスケジュールを指定し、**Start Transfer**を選択します。 ![](/assets/image-20191022-133636.27a41d1bc0e053eca5eb3ae38f5a502276876a78a780c9d760fef9487a78485e.b009b112.png) My Input Transfersタブの下に進行中の新しいデータ転送が表示され、対応するジョブがJobsセクションにリストされます。 ### 並列データインポート `並列インポート`を使用してデータインポートのパフォーマンスを向上させることができます。 プラグインは、`Start datetime`と`End datetime`に依存する時間範囲を作成し、Stripe APIに並列HTTPリクエストを送信します。`End datetime`を編集しない場合、プラグインはまずStripeに保存されている最新レコードのタイムスタンプを取得し、それを`End datetime`として使用しようとします。 次の例では、プラグインは4つの時間範囲を作成し、すべての時間範囲が並列で処理されます。 ``` Start datetime: 2016-01-25T00:00:00 End datetime: 2017-05-25T00.00.00 Time splitting Period for each parallel input: 6 unit: month Time range 1 gte: 2016-01-25T00:00:00 lt: 2016-01-31T00:00:00 # start_datetime to first end of the month Time range 2 gte: 2016-01-31T00:00:00 # has 6 month period lt: 2016-07-31T00.00.00 Time range 3 gte: 2016-07-31T00.00.00.000Z # has 6 month period lt: 2017-02-28T00.00.00 Time range 4 gte: 2017-02-28T00.00.00 lt: 2017-05-25T00.00.00 # to end_datetime ``` ![](/assets/image-20191022-133657.4ffb2d73758eeac183b574feb33f56b47978d8c37188e36799538b8e46d7baae.b009b112.png) ## コマンドラインの使用 ### 'td'コマンド v0.11.9以降のインストール 最新の[TD Toolbelt](https://toolbelt.treasuredata.com/)をインストールできます。 ``` $ td --version 0.15.0 ``` ### 設定ファイルの作成 Stripeアカウントのアクセス情報を使用して、次のような設定ファイル(例:`load.yml`)を準備します。 ```yaml in: type: stripe client_id: xxxxxxxxxxxxx client_secret: xxxxxxxxxxxxx refresh_token: xxxxxxxxxxxxx target: event incremental: true start_datetime: 2017-01-01T07:36:22.000Z formula: gt out: mode: replace ``` Stripe `Event`オブジェクトのインポートを指定する手順は次のとおりです: 1. client_idとclient_secret: StripeアプリのクレデンシャルID 2. refresh_token: Stripe OAuth2 refresh_token、Stripeユーザーアカウントを使用してStripeアプリへのアクセスを許可する必要があります 3. target: インポートしたいStripeオブジェクト。サポートされる値:account、application_fee、balance_history、charge、coupon、customer、dispute、file_upload、event、invoice_item、invoice、order、plan、product、refund、subscription、transfer 4. start_datetime: この日付からデータをインポート、形式は:yyyy-MM-ddThh:mm:ss.000Z 5. formula: start_datetimeを評価する式。サポートされる値:gt(より大きい)、gte(以上)、lt(より小さい)、lte(以下)。 6. incremental: データインポートを継続的に行うか一度だけ行うか、デフォルトはtrue。インクリメンタルはtargetがeventの場合のみサポートされます。 利用可能なoutモードの詳細については、付録を参照してください。 ### インポートするデータのプレビュー(オプション) コマンドtd connector:previewを使用して、インポートされるデータをプレビューできます。 ```bash td connector:preview load.yml ``` ### ロードジョブの実行 ロードジョブを送信します。データサイズによっては数時間かかる場合があります。ユーザーは、データが保存されるデータベースとテーブルを指定する必要があります。 Treasure Dataのストレージは時間でパーティション分割されているため、--time-columnオプションを指定することをお勧めします([データパーティション分割](https://docs.treasuredata.com/smart/project-product-documentation/data-partitioning-in-treasure-data)も参照してください)。オプションが指定されていない場合、Data Connectorは最初のlong型またはtimestamp型の列をパーティション分割時間として選択します。--time-columnに指定する列の型は、long型またはtimestamp型のいずれかである必要があります。 データに時間列がない場合は、add_timeフィルターオプションを使用して追加できます。詳細については、[add_timeフィルタープラグイン](https://docs.treasuredata.com/smart/project-product-documentation/add_time-filter-function)を参照してください。 ```bash 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に存在しない場合、このコマンドは成功しません。そのため、データベースとテーブルを[手動で](https://docs.treasuredata.com/smart/project-product-documentation/data-management)作成するか、`td connector:issue`コマンドで`--auto-create-table`オプションを使用してデータベースとテーブルを自動作成します: ```bash 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"に割り当てることができます。 ### スケジュール実行 定期的なStripeインポートのために、定期的なData Connector実行をスケジュールできます。高可用性を確保するためにスケジューラーを管理しています。この機能を使用すると、ローカルデータセンターに`cron`デーモンを用意する必要がなくなります。 新しいスケジュールは、`td connector:create`コマンドを使用して作成できます。スケジュールの名前、cron形式のスケジュール、データが保存されるデータベースとテーブル、およびData Connector設定ファイルが必要です。 ```bash $ td connector:create daily_stripe_import "10 0 * * *" td_sample_db td_sample_table load.yml ``` `cron`パラメータは、次の3つのオプションも受け入れます:`@hourly`、`@daily`、`@monthly` デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。-tまたは--timezoneオプションを使用して、タイムゾーンでスケジュールを設定できます。`--timezone`オプションは、'Asia/Tokyo'、'America/Los_Angeles'などの拡張タイムゾーン形式のみをサポートします。PST、CSTなどのタイムゾーン略語は*サポートされておらず*、予期しないスケジュールになる可能性があります。 ## Stripe Webhooksのセットアップ Webhooksを使用すると、直接APIリクエストを介してではなく、Stripeアカウントで発生するイベントをキャプチャできます。 Stripeアカウントにログインし、Webhooks —> Settings —> Add endpointを選択します。 ![](/assets/image-20191022-133955.0879b08a954ec38e5cfaf929de2e1892b021dda355faea5a5109159d084d7f45.b009b112.png) URLテキストボックスに次のように入力します: http://in.treasuredata.com/postback/v3/event/{td_database}/{td_table}?td_write_key={td_account_write_api_key} 次に、前述のURLで指定された{td_database}.{td_table}に取り込みたいイベントを選択します。 ![](/assets/image-20191022-134004.b94faca136abe830b97bb137c603bea498f2b2c0927c4b268ba6b2a283b7d47c.b009b112.png) 異なるタイプのイベントを異なる{td_database}.{td_table}に取り込むために、追加のエンドポイントをセットアップできます。