# Sprinklr Import Integration このTreasure Data連携は、デジタルセールス組織に現代的なリモートコラボレーション機能を提供し、優れたチームワークとスムーズなエンゲージメントを実現します: - より強固な関係を見つけ、構築する - 生産性とパフォーマンスを向上させる - 顧客の単一ビューを取得する Import Integrationを使用すると、プロファイルデータをTreasure Dataにインポートできます。 この機能はベータ版です。詳細については、カスタマーサクセス担当者にお問い合わせください。 ## インクリメンタルデータロードについて - スケジュール実行時、取得されるデータの時間枠は各実行ごとに自動的に前方にシフトします。 ![](/assets/image2021-4-6_18-43-24.86d03abace4ca184c72b6857a6cc454f40bca56d8884edae922267e2da2e50bd.62ce3a79.png) ### 例 以下は、インクリメンタルロードが有効な場合の例です。たとえば、初期設定が1月1日で期間が10日間の場合、最初の実行では1月1日から1月10日までに変更されたデータを取得し、2回目の実行では1月11日から現在時刻までを取得し、以降も同様に続きます。 ## 前提条件 - [TD Toolbelt](https://toolbelt.treasuredata.com/)を含むTreasure Dataの基本知識 - 認可されたTreasure Dataアカウントアクセス - Sprinklrユーザーアカウント - Sprinklr開発者アカウント - curlまたはPOSTMANの基本知識 ### SprinklrからTokenを取得する 最初に、アカウントの環境を確認する必要があります。 [https://www.sprinklr.com/](https://www.sprinklr.com/)でSprinklrアカウントにログインします。 Chromeブラウザで、F12を選択して開発者モードに入ります。 ![](/assets/screen-shot-2020-02-28-at-1.52.34-pm.73ee28d7219c8a6be61b3e7e1f406ef84b41bb2c3136038f252f873dbfa4c658.af580b73.png) Consoleを選択し、`SPR_ENV.env`と入力します。この例では、アカウントの環境`prod2`を確認できます。この記事では、これが設定に必要な7つの値のうちの値1です。 ![](/assets/screen-shot-2020-02-28-at-1.53.34-pm.750581b16a7a21a9634525b96305f738d2001f2268c184cf517fc45016aa9fb9.af580b73.png) ### 開発者アカウントを作成する [https://developer.sprinklr.com/member/register](https://developer.sprinklr.com/member/register)にアクセスし、[https://developer.sprinklr.com/docs/read/api_overview/Getting_Started](https://developer.sprinklr.com/docs/read/api_overview/Getting_Started)の手順に従って開発者アカウントを登録します。 Sprinklrから送信されるメールを通じてアカウントを有効化する必要があります。 ### 開発者アプリケーションを作成する URL [https://developer.sprinklr.com/login/](https://developer.sprinklr.com/login/)を使用して開発者アカウントにサインインします。 ![](/assets/3.-sprinklr-developer-sign-in.ed0cd0ea930603da282f62fa044c603dda1f583bd910d3c8279032dd9a09eeb7.af580b73.png) **My Account**を選択します。 ![](/assets/4.-sprinklr-my-account.2f9bade2531361c48f3b3a3af06fe8fff3068027e258ac4fb5fe73a140ad5cbc.af580b73.png) Applicationタブを選択します。 ![](/assets/5.-sprinklr-application-tab.25d93a4d3fabfb486554ab565eb464b7449125047ccd2220cff090364a10a227.af580b73.png) 次に**Create A New App**を選択します。 ![](/assets/6.-sprinklr-create-new-app.d9b31a0bff4d5401ea708ca63930c0469324d38ea5a1a390d9115cb6d88cd8bd.af580b73.png) Register An Application画面で、必要な情報を入力します。 **Register Callback URL**では、スクリーンショットの値を使用することをお勧めします。`http://localhost:8123/sprinklr/callback`(この設定に必要な7つの値のうちの値2)を使用すると、トークン取得プロセスが簡素化されます。 ![](/assets/7.-sprinklr-fill-in-application-info.b262302d520fff76a6d49da8cc68d518ff068b479af1cb7b4313bb92596f5134.af580b73.png) 下にスクロールします。環境に最適なオプションを選択します。この例では、環境は`prod`です。**Issue a new key for Prod2**を選択します。 次に**I agree to the terms of service**を選択します。 **REGISTER APPLICATION**を選択して登録を完了します。 ![](/assets/8.-sprinklr-choose-environment.60b7980765cc2c5246378a8f38a52d2fd017ee4192a2983c076eed0a0a24842b.af580b73.png) **注意:** 環境が利用可能なオプションに含まれていない場合(例:`prod0, qa4 …`)、Sprinklrに連絡してアプリケーションを作成してください。また、ニーズに基づいてレート制限を増やすようSprinklrに連絡することもできます。 次に、[https://developer.sprinklr.com/apps/mykeys](https://developer.sprinklr.com/apps/mykeys)にアクセスして、key(この設定に必要な7つの値のうちの値3)とsecret(7つの値のうちの値4)を確認します。値をメモしてください。後の手順でこの情報を使用します。 ![](/assets/9.-sprinklr-key-and-secret-info.9a0bd7b662d0b3fe7b78df2ab2164e3c2e576b6630d03559abe430f5b6c8a756.af580b73.png) **注意:** 設定を続行する前に、少なくとも30分間待機してください。Sprinklrがアプリケーションを有効にするには処理時間が必要です。 ### アプリケーションを認可する 以下を収集します: | Value | Type | | --- | --- | | 1 | environment | | 2 | redirect URI | | 3 | application key | | 4 | application secret | Webブラウザを開き、次のURLを入力します。中括弧{}内のテキストを適切な値に置き換えてください。 `https://api2.sprinklr.com/{environment}/oauth/authorize?client_id={application_key}&response_type=code&redirect_uri={redirect_uri}` 環境が`prod`の場合は、次のようにURLから`{environment}`を削除します: - Environment prod ``` https://api2.sprinklr.com/oauth/authorize?client_id={application_key}&response_type=code&redirect_uri={redirect_uri} ``` - その他の環境 ``` https://api2.sprinklr.com/{environment}/oauth/authorize?client_id={application_key}&response_type=code&redirect_uri={redirect_uri} ``` たとえば、環境が**prod2**、redirect URIが`http://localhost:8123/sprinklr/callback`、application keyが**th1s1s4f4k3dk3y**の場合、URLは次のようになります: ``` https://api2.sprinklr.com/prod2/oauth/authorize?client_id=th1s1s4f4k3dk3y&response_type=code&redirect_uri=http://localhost:8123/sprinklr/callback ``` ブラウザで、Sprinklrアカウントへのアクセス許可を求められます。**Submit**を選択します。 ![](/assets/10.-sample-authorize-url.c9eb6df8ec842d321a29dbede8c8afa596a096d510f58a4122de98d3b45e831d.af580b73.png)![](/assets/11.-sprinklr-require-authorize.65afe92651771b156b55e3d69a4a3d335ff8e52817134e89d71293695850e04f.af580b73.png) アクセスを許可するスペースを選択し、**Submit**を選択します。 ![](/assets/12.-sprinklr-choose-space.8a1e3b7b062c4ea803bc1ddf083b6b2510450073ade0162052b6790d81b8f35b.af580b73.png) Sprinklrアカウントにまだログインしていない場合は、再度ログインする必要があります。 ログインには、開発者アカウントではなく、Sprinklrアカウントを使用してください。 次のような画面が表示されます: ![](/assets/13.-sprinklr-get-code.ae159e7a2bff181ef75ed03dcf6580fb455b3b508e3eaa08d1c4cc7ff3a2b031.af580b73.png) `code=xxxx`の値をコピーします。この情報は後のステップで使用します。 ### トークンの取得 POSTMANを開き、新しいリクエストを作成します。 ![](/assets/14.-sprinklr-create-postman-request.59061934754b3cdcebfe9abe9b5ba0f1b9aa97cbac8d8df003a118f53051781a.af580b73.png) `https://api2.sprinklr.com/{environment}/oauth/token?client_id={client_id}&client_secret={client_secret}&redirect_uri={redirect_uri}&grant_type=authorization_code&code={code}`を入力し、中括弧{}内のテキストを適切な値に置き換えます。 **code**パラメータは、この設定に必要な7つの値のうち5番目の値です。 注意: 環境が`prod`の場合は、URLから`{environment}`を削除してください。 コード値が`12233333`の場合の例は次のとおりです: ``` https://api2.sprinklr.com/prod2/oauth/token?client_id=th1s1s4f4k3dk3y&client_secret=th1s1s4f4k3ds3cr3t&redirect_uri=http://localhost:8123/sprinklr/callback&grant_type=authorization_code&code=12233333 ``` メソッドをPOSTに変更します。 ![](/assets/15.-sprinklr-postman-post.b446ab3a46d859dedbcc94bcfffe99b4d5623ecd502be40dda5929746bf3bd4f.af580b73.png) Headersタブを選択します。`Content-Type`キーに`application/x-www-form-urlencoded`の値が表示されます。**Send**を選択します。 ![](/assets/16.-sprinklr-postman-header-and-send.db0cedc6015c00d8e5bd88a3f3cd46ce468a8e62689bed28c32233cf5b5c7bd8.af580b73.png) 次のようなレスポンスが表示されます: ```json { "access_token": "th1s1s4f4k3d4cc3sst0k3n", "refresh_token": "th1s1s4f4k3dr3fr3sht0k3n", "token_type": "Bearer", "expires_in": 2591999 } ``` `access_token`(この設定に必要な7つの値のうち6番目)と`refresh_token`(7番目)をメモしてください。 または、cURLの送信方法がわかる場合は、次のコマンドを使用してトークンを取得できます: ``` curl --location --request POST 'https://api2.sprinklr.com/{environment}/oauth/token?client_id={client_id}&client_secret={client_secret}&redirect_uri={redirect_uri}&grant_type=authorization_code&code={code}' --header 'Content-Type: application/x-www-form-urlencoded' ``` 例は次のとおりです: ``` curl --location --request POST 'https://api2.sprinklr.com/prod2/oauth/token?client_id=th1s1s4f4k3dk3y&client_secret=th1s1s4f4k3ds3cr3t&redirect_uri=http://localhost:8123/sprinklr/callback&grant_type=authorization_code&code=12233333' --header 'Content-Type: application/x-www-form-urlencoded' ``` ### すべての情報の収集 Sprinklrコネクタの認証を作成するために必要なすべての情報を指定しました。次のマッピングテーブルは、収集した値を示しています: | Name | Value | Configuration property | Configuration name in the Sprinklr console | | --- | --- | --- | --- | | *Environment* (値1) | prod2 | environment | Environment | | *Redirect URI* (値2) | http://localhost:8123/sprinklr/callback | redirect_uri | Redirect URI | | *Application Key* (値3) | your_applicaiton_key | client_id | Application key | | *Application secret* (値4) | your_application_secret | client_secret | Application secret | | *Access token* (値6) | your_access_token | access_token | Access token | | *Refresh token*(値7) | your_refresh_token | refresh_token | Refresh token | ## TD Consoleを使用した接続の作成 ### 新規接続の作成 データ接続を設定する際、統合にアクセスするための認証を提供します。Treasure Dataでは、認証を設定してからソース情報を指定します。 Integrations Hub > Catalogに移動し、Sprinklrを検索して選択します。 ![](/assets/screen-shot-2020-01-13-at-10.44.50.438826a2cf19c8b58af5fffca42b7c11aefb0e3bd44c04711dd123c4b9f5a0ef.af580b73.png) 次のダイアログが開きます。 ![](/assets/screen-shot-2020-01-13-at-10.47.49.d76b2a89e2d7240abc0db6e16f281a601fbcd2db1dce2cfb4aec960f8deafb97.af580b73.png) 前のステップで取得した情報を使用して、必要な認証情報を編集します。 ![](/assets/screen-shot-2020-01-13-at-10.47.16.8934cbfc3ddaf244fc2af5b65e32a6e0e30996475683b9839ef3ecdbc4477143.af580b73.png) **Continue**を選択します。 新しいSprinklr Connectionに名前を付けます。**Done**を選択します。 ![](/assets/screen-shot-2020-01-13-at-10.51.21.e29f0e17f06d95e7038a757942a120094aca287ac5646e1b24ecdfa08373ee23.af580b73.png) ### SprinklrデータのTreasure Dataへの転送 認証された接続を作成すると、自動的にAuthenticationsタブに移動します。作成した接続を探して、**New Source**を選択します。 詳細を入力し、**Next**を選択します。 ![](/assets/screen-shot-2020-01-13-at-10.59.02.b39ebd3561fa888ac2bc553e0add90a2e7909f735449f5cf165ce7cc6e55a22a.af580b73.png) パラメータ設定 | パラメータ | 説明 | **必須** | | --- | --- | --- | | **Client Id** | アプリケーションのキー - Sprinklrでアプリケーションを作成する際に取得されます。 | はい | | **Client secret** | アプリケーションのキー - Sprinklrでアプリケーションを作成する際に取得されます | はい | | **Access token** | アクセストークン - アプリケーションへのアクセスを許可する際に取得されます | はい | | **Refresh token** | リフレッシュトークン - アプリケーションへのアクセスを許可する際に取得されます | はい | | **Redirect Uri** | リダイレクトURL - Sprinklrでアプリケーションを作成する際に宣言されます | はい | | **Environment** | ユーザーのSprinklr環境 - Sprinklr Webアプリにログインすることで取得できます | はい | | **Target** | 取り込むターゲットオブジェクト - enum(`profile`) | いいえ | | `Filter Column` | **start_time**と**end_time**でフィルタリングするために使用するプロパティの名前、enum(`created_time`,`modified_time`) (文字列、デフォルト: `modified_time`) | いいえ | | **Sn types** | 取り込むプロファイルに関連付けられたソーシャルネットワークタイプのスペース区切りリスト、例 `FACEBOOK TWITTER LINKEDIN YOUTUBE ...` (文字列、デフォルト: `null`) | いいえ | | **Source** | Sprinklrで取り込みたいデータソース (現在は**Profile**のみサポート) | はい | | **Number of profiles to fetch in each API call** | 各API呼び出しでSprinklrから取得するプロファイルの数 | いいえ | | **Filter time using** | フィルタリングまたはインクリメンタル読み込みで有効にしたいプロファイルのタイムスタンプタイプを選択します。サポートされているオプションは**Created Time**と**Modified Time**です。新しく作成されたプロファイルのみを取り込みたい場合は、**Created Time**を使用します。更新されたプロファイルを取り込みたい場合は、**Modified Time**を使用します。 | いいえ | | **Start Time** | この指定された開始時刻から作成または変更されたプロファイルを取得します。 | いいえ | | **End Time** | この指定された終了時刻まで作成または変更されたプロファイルを取得します | | | **Incremental loading** | スケジュール実行時に、取得されるデータの時間ウィンドウが各実行時に自動的に前方にシフトします。例えば、初期設定が1月1日で期間が10日間の場合、最初の実行では1月1日から1月10日までに変更されたデータを取得し、2回目の実行では1月11日から現在の時刻までを取得します。以降も同様です | いいえ | | **Social networks** | 大文字と小文字を区別する、スペース区切りのソーシャルネットワークリスト。このリストには、取り込みたいプロファイルが含まれます。例えば、FacebookとTwitterのプロファイルのみを取り込みたい場合は、**"FACEBOOK TWITTER"**を使用します | いいえ | | **Profile list** | 数値、スペース区切りのプロファイルリストIDリスト。このリストには、取り込みたいプロファイルが含まれます。正しい入力例 **"1 2 3 4"** | いいえ | | **Partner profile list** | 数値、スペース区切りのパートナープロファイルリストIDリスト。このリストには、取り込みたいプロファイルが含まれます。正しい入力例 **"1 2 3 4"** | いいえ | | **Tags** | 大文字と小文字を区別する、スペース区切りのタグリスト。このリストには、取り込みたいプロファイルが含まれます。正しい入力例 **"tag1 tag2"** | いいえ | ### データプレビュー データプレビューはオプションであり、次のダイアログページに進みたい場合は安全に**Next**をクリックできます。 1. **Generate Preview**を選択して、インポートを実行する前にデータのプレビューを表示します。 データプレビューに表示されるデータは、ソースから近似されたものです。実際にインポートされるデータではありません。 2. データが期待通りに見えることを確認します。 ![](/assets/snippet-data-preview-2024-02-09.27dc5fd8772fca4f7f44ab28c00476ae1894744fe1e75d06932628929cc7bff1.4e139be3.png) 3. **Next**を選択します。 ### ターゲットデータベースとテーブルの選択 データを転送する既存のデータベースとテーブルを選択するか、新しいデータベースとテーブルを作成します。新しいデータベースを作成する場合は、データベースに名前を付けます。**Create new table**についても同様の手順を実行します。 既存のテーブルにレコードを**append(追加)**するか、既存のテーブルを**replace(置換)**するかを選択します。 デフォルトのキーを使用するのではなく、異なる**partition key seed**を設定したい場合は、ポップアップメニューを使用して指定できます。 ![](/assets/screen-shot-2020-01-13-at-11.37.06.d6276d7563326a30475ac4b76c043acc0614123b3c5d28aad10cb514e2d66d40.af580b73.png) ### スケジュール設定 **Schedule**タブでは、1回限りの転送を指定するか、自動化された定期的な転送をスケジュールできます。**Once now**を選択した場合は、**Start Transfer**を選択します。**Repeat…**を選択した場合は、スケジュールオプションを指定してから、**Schedule Transfer**を選択します。 ![](/assets/screen-shot-2020-01-13-at-11.53.45.faa2b1fb1807f2ecf4e18eade17dd97aaa71c5a485519ccc053d20e30f1b7a6c.af580b73.png) ![](/assets/screen-shot-2020-01-13-at-11.54.01.eddbf89126cf94b36fa4fbc1eb224f511225cbd94c83c684096f1a5be9229110.af580b73.png) 転送が実行された後、転送結果は**Data Workbench** > **Databases**で確認できます。 ## (オプション) CLIを使用したエクスポートインテグレーション CLI(Toolbelt)を使用して、**Sprinklr**から**Treasure Data**に結果をインポートすることもできます。 サーバーへのエクスポート情報を`td query`コマンドの`--result`オプションとして指定する必要があります。`td query`コマンドについては、[こちらの記事](https://docs.treasuredata.com/display/PD/TD+Toolbelt+Job+and+Query+Command+Reference)を参照してください。 オプションの形式はJSONで、一般的な構造は以下の通りです。 プロファイルターゲットの例 ```yaml in: type: sprinklr client_id: client_id client_secret: client_secret access_token: access_token refresh_token: refresh_token redirect_uri: http://localhost:8123/ environment: prod2 target: profile incremental: true page_size: 5000 filter_column: modified_time start_time: "2019-12-12T00:00:00.000Z" end_time: "2019-12-31T00:00:00.000Z" sn_types: "FACEBOOK TWITTER LINKEDIN YOUTUBE" profile_list: "1 2 3 4" partner_profile_list: "1 2 3 4" tags: "#tag1 #tag2 #tag3 #tag4" ``` レポートターゲットの例 ```yaml in: type: sprinklr client_id: client_id client_secret: client_secret access_token: access_token refresh_token: refresh_token redirect_uri: http://localhost:8123/ environment: prod2 target: report incremental: true report_page_size: 1000 start_time: "2019-12-12T00:00:00.000Z" end_time: "2019-12-31T00:00:00.000Z" payload: | { "requests": { "sample": { "timeFilter": { "sinceTime": 1, "untilTime": 2 }, "reportingEngine": "PLATFORM", "report": "POST_INSIGHTS", "timezone": "UTC", "details": { "accessible": true }, "groupBys": [ { "key": "LEVEL1", "field": "LEVEL1", "groupType": "FIELD", "details": {}, "sort": null, "page": null, "projections": null, "filters": null, "namedFilters": null, "childrenGroupBys": [ { "key": "LEVEL2_1", "field": "LEVEL2_1", "groupType": "DATE_HISTOGRAM", "details": { "interval": "1d" }, "childrenGroupBys": [ { "key": "LEVEL3_1", "field": "LEVEL3_1", "groupType": "FIELD", "details": { "accessible": true } }, { "key": "LEVEL3_2", "field": "LEVEL3_2", "groupType": "FIELD", "details": { "accessible": true }, "childrenGroupBys": null } ] }, { "key": "LEVEL2_2", "field": "LEVEL2_2", "groupType": "FIELD", "details": { "interval": "1d" }, "childrenGroupBys": [] } ] }, { "key": "LEVEL1_2", "field": "LEVEL1_2", "groupType": "FIELD", "details": {}, "sort": null, "page": null, "projections": null, "filters": null, "namedFilters": null } ], "filters": [ { "filterType": "IN", "field": "CLIENT_ID", "values": [ 1, "2" ], "details": { "accessible": true } }, { "filterType": "GT", "field": "ACCOUNT_ID", "values": [ 1 ], "details": { "accessible": true } } ], "projections": [ { "measurement": "TOTAL_ENGAGEMENT", "missing": null, "aggregateFunction": "SUM", "details": null, "filters": null, "key": "TOTAL_ENGAGEMENT_1" }, { "measurement": "PUBLISHED_MESSAGE_COUNT", "missing": null, "aggregateFunction": "SUM", "details": null, "filters": null, "key": "PUBLISHED_MESSAGE_COUNT_1" } ] } } } ``` ## 参考資料 - API概要: https://api2.sprinklr.com/prod0/ - OAuth 2.0: https://developer.sprinklr.com/docs/read/developr/framework/OAuth