このOracle Eloqua用データコネクタを使用すると、コンタクトデータとアクティビティデータをTreasure Dataにインポートできます。
Treasure Dataの基本的な知識。
- Treasure Dataアカウント
- Oracle Eloquaアカウント
セキュリティポリシーで IP ホワイトリストが必要な場合は、接続を成功させるために Treasure Data の IP アドレスを許可リストに追加する必要があります。
リージョンごとに整理された静的 IP アドレスの完全なリストは、次のリンクにあります: https://api-docs.treasuredata.com/en/overview/ip-addresses-integrations-result-workers/
最初のステップは、認証情報のセットを使用して新しい認証を作成することです。
Integrations Hubを選択します。
Catalogを選択します。

- カタログでOracle Eloquaを検索します。アイコンの上にマウスを置き、Create Authenticationを選択します。

- Credentialsタブが選択されていることを確認し、統合のための認証情報を入力します。
認証フィールド
| Parameter | Description |
|---|---|
| Authentication Method | Basic (デフォルト) |
| Eloqua Site Name | Oracle EloquaサイトのURL |
| Username | Oracle Eloquaアカウントのユーザー名 |
| Password | アカウントのパスワード |
Continueを選択します。
認証の名前を入力し、Doneを選択します。
TD Consoleを開きます。
Integrations Hub > Authenticationsに移動します。
新しい認証を見つけて、New Sourceを選択します。
接続タブで、以下の情報を入力し、Nextを選択します。
| Parameter | Description |
|---|---|
| Data Transfer Name | 転送の名前を定義できます。 |
| Authentication | 転送に使用される認証名。 |

Source Tableタブで以下の情報を入力し、Nextを選択します。
| Parameter | Description |
|---|---|
| Data Type | ContactまたはActivityを選択 |
| Import Fields | インポートするコンタクトフィールドを選択します。Data Type Contactの場合のみサポート。フィールド名はカンマで区切る必要があります。 |
| Start Time | この時刻以降のデータをインポート |
| End Time | この時刻までのデータをインポート |
| Incremental Loading | Incremental loadingオプションがチェックされている場合、新規および更新されたコンタクトを増分的にインポートします。 |
| Update End Time | 終了時刻が増分ジョブの実行時刻よりも大きく、Update End Timeオプションがチェックされている場合、終了時刻はジョブの実行時刻に設定されます。 |

Data Settingタブで以下の情報を入力し、Nextを選択します。
| Parameter | Description |
|---|---|
| Max retry count per API call | API呼び出しごとの最大リトライ回数 |
| Initial retry interval per API call | API呼び出しごとの初期リトライ間隔(ミリ秒) |
| Max retry interval per API call | API呼び出しごとの最大リトライ間隔(ミリ秒) |
| HTTP Connect Timeout | ミリ秒単位、デフォルト: 3分 |
| HTTP Read Timeout | ミリ秒単位、デフォルト: 3分 |

インポートを実行する前に、Generate Previewを選択してデータのプレビューを確認できます。

データ配置では、データを配置するターゲットのデータベースとテーブルを選択し、インポートの実行頻度を指定します。
Database > Select an existing または Create New Database を選択します。
オプションで、データベース名を入力します。
Table > Select an existing または Create New Table を選択します。
オプションで、テーブル名を入力します。
データをインポートする方法を選択します。
- Append (デフォルト) - データインポートの結果がテーブルに追加されます。 テーブルが存在しない場合は、作成されます。
- Always Replace - 既存のテーブルの全コンテンツをクエリの結果出力で置き換えます。テーブルが存在しない場合は、新しいテーブルが作成されます。
- Replace on New Data: 新しいデータが存在する場合のみ、既存のテーブルの全コンテンツを結果出力で置き換えます。
Timestamp-based Partition Key カラムを選択します。 デフォルトキーとは異なるパーティションキーシードを設定する場合は、パーティション時間として long または timestamp カラムを指定できます。デフォルトの時間カラムとして、add_time フィルターを使用した upload_time が使用されます。
データストレージの Data Storage 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 で転送の結果を確認できます。

コネクターをセットアップする前に、最新の TD Toolbelt をインストールしてください。バージョン 0.11.9 以降が必要です。
バージョンを確認するには:
$ td --version
0.16.10in:
type: eloqua
site_name: "YOUR_ELOQUA_SITE_NAME"
username: "YOUR_USERNAME"
password: "YOURPASSWORD"
target: activity
data_type: EmailOpen
start_time: "2018-05-07T00:00:00Z"
end_time: "2018-05-08T00:00:00Z"
out:
mode: replace| オプション名 | 説明 | 型 | 必須? | デフォルト値 |
|---|---|---|---|---|
| type | ||||
| site_name | Eloqua サイト名 | |||
| username | ユーザー名 | string | yes | N/A |
| password | パスワード | string | yes | N/A |
| target | contact または activity | string | yes | contact |
| data_type | EmailOpen, Bounceback, Unsubscribe, EmailSend, Subscribe, EmailClickthrough,WebVisit, PageView, FormSubmit, External Activity | yes, activity target の場合 | EmailOpen | |
| import_fields | データタイプ contact に対してインポートされるフィールド名。この値が設定されておらず、contact データタイプが 250 個以上のフィールドを持つ場合、最初の 250 個のフィールドがインポートされます。その他のフィールドはスキップされます。 | string | no | |
| start_time | レコードの取得を開始する日時を指定します。フォーマット yyyy-MM-dd'T'hh:mm:ss.SSS'Z' (例: '2018-05-07T00:00:00Z')。排他的 | string | yes | N/A |
| end_time | レコードを取得する許容期間を指定します。フォーマット yyyy-MM-dd'T'hh:mm:ss.SSS'Z' (例: '2018-05-08T00:00:00Z')。包括的 | string | yes | N/A |
| incremental | "mode: append" の場合は true、"mode: replace" の場合は false。 | bool | no | true |
| incremental_field | このフィールドに基づいて増分処理を行います。サポートされる値: ActivityDate、LinkedToContactDate、CampaignResponseCreatedAt | string | yes, activity データタイプ WebVisit、PageView の場合 | ActivityDate |
| update_end_time | 終了時間がジョブの実行時間より大きい場合、クエリの終了時間を更新します。増分ジョブのみサポートされます。 | bool | no | false |
| mode | ターゲットテーブルのレコードを append または replace します。replace モードでは、ターゲットテーブルに手動で加えられたスキーマ変更はそのまま保持されます。 | string | yes | Append |
Eloqua コンソールでフィールドのリストを読み取ったり取得したりすることができないため、これらは API 経由でのみサポートされています。そのため、インポートジョブでは、import_fields 設定の選択と再利用をサポートするために、すべての contact フィールド名をログ出力しています。
例:
Eloqua インポートジョブコンソールには次のように表示されます
2024-06-14 11:29:21.271 +0000 [INFO] (0001:transaction): All contact fields: C_EmailAddress,C_FirstName,C_LastName,C_Company............contact オブジェクトが 250 個以上のフィールドを持ち、Import Fields が空の場合は、次のログが表示されます。
Import contact fields: C_EmailAddress,C_FirstName,C_LastName,C_Company...........Skipped contact fields: C_Country1,C_Province1,C_City1インポートフィールドを指定する場合は、すべての contact フィールドログからフィールド名をコピーして、Import Fields に入力できます。
データをプレビューするには、td connector:preview コマンドを使用します。
$ td connector:preview load.yml
+-------------------+00--------------------+--------------------------+----
| activity_id:long | activity_type:string | activity_date:timestamp | ...
+---------------------+--------------------+--------------------------+----
| 12345678 | "__" | "2018-04-17 13:39:06 UTC"| ...
+-------------------+----------------------+--------------------------+----ロードジョブを送信します。データサイズによっては、数時間かかる場合があります。
$ td connector:issue load.yml --database td_sample_db --table td_sample_table --time-column activity_dateデータが保存されるデータベースとテーブルを指定する必要があります。
Treasure Dataのストレージは時間でパーティション分割されているため、-time-columnオプションの使用を推奨します。(データパーティショニングを参照してください。)オプションが指定されていない場合、データコネクタは最初のlongまたはtimestampカラムをパーティショニング時間として選択します。-time-columnで指定するカラムのタイプは、long型またはtimestamp型である必要があります。
データに時間カラムがない場合は、add_timeフィルタオプションを使用して追加できます。詳細については、add_time フィルタ関数を参照してください。
td connector:issueコマンドは、*データベース(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 activity_date --auto-create-tableEloqua Importコネクタの定期的なデータコネクタ実行をスケジュールすることができます。この機能を使用することで、cronデーモンを使用する必要がなくなります。ただし、高可用性を確保するために、スケジューラを慎重に設定することを推奨します。
td connector:createコマンドを使用して新しいスケジュールを作成できます。以下を指定する必要があります:
- スケジュールの名前
- cron形式のスケジュール
- データが保存されるデータベースとテーブル
- データコネクタ設定ファイル
$ td connector:create daily_eloqua_import "9 0 * * *" td_sample_db td_sample_table load.ymlcronパラメータは、@hourly、@daily、@monthlyの3つのオプションも受け入れます。
デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。—tまたは—-timezoneオプションを使用して、別のタイムゾーンでスケジュールを設定できます。--timezoneオプションは、'Asia/Tokyo'、'America/Los_Angeles'などの拡張タイムゾーン形式のみをサポートします。PSTやCSTなどのタイムゾーン略語はサポートされておらず、予期しないスケジュールにつながる可能性があります。
td connector:listコマンドを使用して、スケジュールされたエントリのリストを表示できます。
$ td connector:list
+-------------------------+-------------+----------+-------+--------------+-----------------+------------------------------+
| Name | Cron | Timezone | Delay | Database | Table | Config |
+-------------------------+-------------+----------+-------+--------------+-----------------+------------------------------+
| daily_eloqua_import | 9 0 * * * | UTC | 0 | td_sample_db | td_sample_table | {"type"=>"eloqua", ... } |
+-------------------------+-------------+----------+-------+--------------+-----------------+------------------------------+td connector:showは、スケジュールエントリの実行設定を表示します。
% td connector:show daily_eloqua_import
Name : daily_eloqua_import
Cron : 9 0 * * *
Timezone : UTC
Delay : 0
Database : td_sample_db
Table : td_sample_tabletd connector:historyは、スケジュールエントリの実行履歴を表示します。各実行の結果を調査するには、td job jobidを使用します。
% td connector:history daily_eloqua_import
+--------+---------+---------+--------------+-----------------+----------+---------------------------+----------+
| JobID | Status | Records | Database | Table | Priority | Started | Duration |
+--------+---------+---------+--------------+-----------------+----------+---------------------------+----------+
| 678066 | success | 10000 | td_sample_db | td_sample_table | 0 | 2017-07-28 00:09:05 +0000 | 160 |
| 677968 | success | 10000 | td_sample_db | td_sample_table | 0 | 2017-07-27 00:09:07 +0000 | 161 |
| 677914 | success | 10000 | td_sample_db | td_sample_table | 0 | 2017-07-26 00:09:03 +0000 | 152 |
| 677872 | success | 10000 | td_sample_db | td_sample_table | 0 | 2017-07-25 00:09:04 +0000 | 163 |
| 677810 | success | 10000 | td_sample_db | td_sample_table | 0 | 2017-07-24 00:09:04 +0000 | 164 |
| 677766 | success | 10000 | td_sample_db | td_sample_table | 0 | 2017-07-23 00:09:04 +0000 | 155 |
| 677710 | success | 10000 | td_sample_db | td_sample_table | 0 | 2017-07-22 00:09:05 +0000 | 156 |
| 677610 | success | 10000 | td_sample_db | td_sample_table | 0 | 2017-07-21 00:09:04 +0000 | 157 |
+--------+---------+---------+--------------+-----------------+----------+---------------------------+----------+
8 rows in settd connector:deleteは、スケジュールを削除します。
$ td connector:delete daily_eloqua_import