Skip to content
Last updated

Intercom Import Integration

IntercomからTreasure Dataへ直接データをインポートできます。

前提条件

  • TD Toolbeltを含むTreasure Dataの基礎知識
  • Intercomの基礎知識

TD Consoleを使用してConnectionを作成する

新しいConnectionを作成する

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 idAPI Keyが使用されていました。しかし、IntercomはOAuthフローを開始し、Intercom APIキーは非推奨になりました。

Google Sign-Inを使用してIntercomにログインしている場合は、OAuthフローを開始する前に、すでにIntercomにログインしていることを確認してください。IntercomはOAuthフロー経由でGoogle Sign-Inではなく、パスワードログインを要求します。

既存のAPIキーベースのConnectionをOAuthに更新する

APIキーを使用している場合でも、以前と同じようにOAuthフローを開始してください。両方が指定されている場合、OAuthがAPIキーよりも優先されます。

Treasure Dataへデータを転送する

認証済みConnectionを作成すると、自動的にAuthenticationsタブに移動します。作成したConnectionを探して、New Sourceを選択します。

UsersとConversationsからインポート:

Sourceからusersまたはconversationsを選択します。

パラメータ:

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

TagsとSegmentsからインポート:

Sourceからtagsまたはsegmentsを選択します

Data Preview

インポートを実行する前に、Generate Preview を選択してデータのプレビューを表示できます。Data preview はオプションであり、選択した場合はダイアログの次のページに安全にスキップできます。

  1. Next を選択します。Data Preview ページが開きます。
  2. データをプレビューする場合は、Generate Preview を選択します。
  3. データを確認します。

Data Placement

データの配置について、データを配置したいターゲット database と table を選択し、インポートを実行する頻度を指定します。

  1. Next を選択します。Storage の下で、インポートされたデータを配置する新しい database を作成するか、既存の database を選択し、新しい table を作成するか、既存の table を選択します。

  2. Database を選択 > Select an existing または Create New Database を選択します。

  3. オプションで、database 名を入力します。

  4. Table を選択 > Select an existing または Create New Table を選択します。

  5. オプションで、table 名を入力します。

  6. データをインポートする方法を選択します。

    • Append (デフォルト) - データインポートの結果は table に追加されます。 table が存在しない場合は作成されます。
    • Always Replace - 既存の table の全体の内容をクエリの結果出力で置き換えます。table が存在しない場合は、新しい table が作成されます。
    • Replace on New Data - 新しいデータがある場合のみ、既存の table の全体の内容をクエリの結果出力で置き換えます。
  7. Timestamp-based Partition Key 列を選択します。 デフォルトキーとは異なるパーティションキーシードを設定したい場合は、long または timestamp 列をパーティショニング時刻として指定できます。デフォルトの時刻列として、add_time フィルターで upload_time を使用します。

  8. データストレージの Timezone を選択します。

  9. Schedule の下で、このクエリを実行するタイミングと頻度を選択できます。

一度だけ実行

  1. Off を選択します。
  2. Scheduling Timezone を選択します。
  3. Create & Run Now を選択します。

定期的に繰り返す

  1. On を選択します。
  2. Schedule を選択します。UI では、@hourly@daily@monthly、またはカスタム cron の 4 つのオプションが提供されます。
  3. Delay Transfer を選択して、実行時間の遅延を追加することもできます。
  4. Scheduling Timezone を選択します。
  5. Create & Run Now を選択します。

転送が実行された後、Data Workbench > Databases で転送の結果を確認できます。

Details

Transferに名前を付けて、Doneを選択して開始します。

コマンドラインの使用

'td' コマンド v0.11.9 以降をインストール

最新の TD Toolbelt をインストールできます。

$ td --version
0.15.0

設定ファイルの作成

以下の例のように、Intercom アカウントのアクセス情報を含む設定ファイル(例: load.yml)を準備します:

Users をインポートする場合

in:
  type: intercom
  access_token: xxxxxxx
  target: users
  incremental: false
out:
 mode: append

Conversations をインポートする場合

in:
  type: intercom
  access_token: xxxxxxx
  target: conversations
  incremental: false
out:
 mode: append

Segments をインポートする場合

in:
  type: intercom
  access_token: xxxxxxx
  target: segments
out:
 mode: append

Tags をインポートする場合

in:
  type: intercom
  access_token: xxxxxxx
  target: tags
out:
 mode: append

Access Token

上記の例では、Intercom の users オブジェクトをダンプします。ここで access_token は、Intercom から取得した有効なアクセストークンです。TD Console を通じた OAuth フローの使用が推奨されます。OAuth フローの代わりに、Personal Access Tokenaccess_token として使用することもできます。

Target

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