IntercomからTreasure Dataへ直接データをインポートできます。
- TD Toolbeltを含むTreasure Dataの基礎知識
- Intercomの基礎知識
Integrations Hub > Catalogに移動し、Intercomを検索して選択します。

Createを選択します。認証済みConnectionを作成します。
次のダイアログが開きます。

Intercomへのアクセスには、OAuth2認証が必要です。
Click hereを選択して、Intercomアカウントに接続します。
認証情報を入力してIntercomにサインインします。

Treasure Dataへのアクセスを許可すると、TD Consoleにリダイレクトされます。再度Intercom connectorを選択し、OAuth Authenticateメソッドを選択します。ドロップダウンリストにアカウント名を持つOAuth接続が表示されます。使用するアカウントを選択し、接続の作成に進みます。


新しいGoogle Drive Connectionに名前を付けます。Doneを選択します。
以前、このdata connectorでは認証にApp idとAPI Keyが使用されていました。しかし、IntercomはOAuthフローを開始し、Intercom APIキーは非推奨になりました。
Google Sign-Inを使用してIntercomにログインしている場合は、OAuthフローを開始する前に、すでにIntercomにログインしていることを確認してください。IntercomはOAuthフロー経由でGoogle Sign-Inではなく、パスワードログインを要求します。
APIキーを使用している場合でも、以前と同じようにOAuthフローを開始してください。両方が指定されている場合、OAuthがAPIキーよりも優先されます。
認証済みConnectionを作成すると、自動的にAuthenticationsタブに移動します。作成したConnectionを探して、New Sourceを選択します。
Sourceからusersまたはconversationsを選択します。


パラメータ:
- Incremental: スケジュールに基づいてデータをインポートする場合に使用します。前回の実行以降に作成された最新のuserまたはconversationのみをインポートするために使用します。
Sourceからtagsまたはsegmentsを選択します


インポートを実行する前に、Generate Preview を選択してデータのプレビューを表示できます。Data preview はオプションであり、選択した場合はダイアログの次のページに安全にスキップできます。
- Next を選択します。Data Preview ページが開きます。
- データをプレビューする場合は、Generate Preview を選択します。
- データを確認します。
データの配置について、データを配置したいターゲット database と table を選択し、インポートを実行する頻度を指定します。
Next を選択します。Storage の下で、インポートされたデータを配置する新しい database を作成するか、既存の database を選択し、新しい table を作成するか、既存の table を選択します。
Database を選択 > Select an existing または Create New Database を選択します。
オプションで、database 名を入力します。
Table を選択 > Select an existing または Create New Table を選択します。
オプションで、table 名を入力します。
データをインポートする方法を選択します。
- Append (デフォルト) - データインポートの結果は table に追加されます。 table が存在しない場合は作成されます。
- Always Replace - 既存の table の全体の内容をクエリの結果出力で置き換えます。table が存在しない場合は、新しい table が作成されます。
- Replace on New Data - 新しいデータがある場合のみ、既存の table の全体の内容をクエリの結果出力で置き換えます。
Timestamp-based Partition Key 列を選択します。 デフォルトキーとは異なるパーティションキーシードを設定したい場合は、long または timestamp 列をパーティショニング時刻として指定できます。デフォルトの時刻列として、add_time フィルターで upload_time を使用します。
データストレージの Timezone を選択します。
Schedule の下で、このクエリを実行するタイミングと頻度を選択できます。
- Off を選択します。
- Scheduling Timezone を選択します。
- Create & Run Now を選択します。
- On を選択します。
- Schedule を選択します。UI では、@hourly、@daily、@monthly、またはカスタム cron の 4 つのオプションが提供されます。
- Delay Transfer を選択して、実行時間の遅延を追加することもできます。
- Scheduling Timezone を選択します。
- Create & Run Now を選択します。
転送が実行された後、Data Workbench > Databases で転送の結果を確認できます。
Transferに名前を付けて、Doneを選択して開始します。

最新の TD Toolbelt をインストールできます。
$ td --version
0.15.0以下の例のように、Intercom アカウントのアクセス情報を含む設定ファイル(例: load.yml)を準備します:
Users をインポートする場合
in:
type: intercom
access_token: xxxxxxx
target: users
incremental: false
out:
mode: appendConversations をインポートする場合
in:
type: intercom
access_token: xxxxxxx
target: conversations
incremental: false
out:
mode: appendSegments をインポートする場合
in:
type: intercom
access_token: xxxxxxx
target: segments
out:
mode: appendTags をインポートする場合
in:
type: intercom
access_token: xxxxxxx
target: tags
out:
mode: append上記の例では、Intercom の users オブジェクトをダンプします。ここで access_token は、Intercom から取得した有効なアクセストークンです。TD Console を通じた OAuth フローの使用が推奨されます。OAuth フローの代わりに、Personal Access Token を access_token として使用することもできます。
target オプションで、ストアから取得するデータを選択できます。
td connector:preview コマンドを使用して、インポート予定のデータをプレビューできます。
$ td connector:preview load.yml+-----------+--------------+----------------------------+---- | id:string | user_id:string | email:string | ... +-----------+----------------+------------------------------- | "1" | "33" | "xxxx@xxx.com" | | "2" | "34" | "yyyy@yyy.com" | | "3" | "35" | "zzzz@zzz.com" | | "4" | "36" | "aaaa@aaa.com" | | "6" | "37" | "bbbb@bbb.com" | +-----------+----------------+--------------------------+----
## Load Jobの実行
Load Jobを送信します。データサイズによっては数時間かかる場合があります。ユーザーはデータが保存されているデータベースとテーブルを指定する必要があります。
Treasure Dataのストレージは時間でパーティション化されているため、`--time-column`オプションを指定することをお勧めします。オプションが指定されていない場合、Data Connectorは最初の`long`または`timestamp`カラムをパーティショニング時間として選択します。`--time-column`で指定されるカラムのタイプは、`long`または`timestamp`タイプのいずれかである必要があります。
データに時間カラムがない場合は、`add_time`フィルターオプションを使用して追加できます。詳細は[add\_time filter plugin](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 created_at
上記のコマンドは、すでに*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`オプションを使用してデータベースとテーブルを自動作成してください。
$ td connector:issue load.yml --database td_sample_db --table td_sample_table --time-column created_at --auto-create-table
Time Format カラムを「Partitioning Key」に割り当てるには、「--time-column」オプションを使用します。
# スケジュール実行
定期的なIntercomインポートのために、定期的なData Connector実行をスケジュールできます。当社は高可用性を確保するためにスケジューラーを慎重に構成しています。この機能を使用することで、ローカルデータセンターで`cron`デーモンを実行する必要がなくなります。
## スケジュールの作成
新しいスケジュールは`td connector:create`コマンドを使用して作成できます。スケジュールの名前、cronスタイルのスケジュール、データが保存されるデータベースとテーブル、およびData Connector設定ファイルが必要です。
$ td connector:create
daily_intercom_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などのタイムゾーンの略語は\*サポートされておらず\*、予期しないスケジュールにつながる可能性があります。
## スケジュールのリスト表示
`td connector:list`でスケジュールされたエントリのリストを確認できます。
$ td connector:list
## スケジュールの設定と履歴の表示
`td connector:show`は、スケジュールエントリの実行設定を表示します。
td connector:show daily_intercom_import
`td connector:history`は、スケジュールエントリの実行履歴を表示します。個々の実行の結果を調査するには、`td job jobid`を使用します。
td connector:history daily_intercom_import
## スケジュールの削除
`td connector:delete`はスケジュールを削除します。
td connector:delete daily_intercom_import