Skip to content
Last updated

Oracle Eloqua Import Integration

このOracle Eloqua用データコネクタを使用すると、コンタクトデータとアクティビティデータをTreasure Dataにインポートできます。

前提条件

Treasure Dataの基本的な知識。

要件と制限事項

  • Treasure Dataアカウント
  • Oracle Eloquaアカウント

Treasure Data Integration の静的 IP アドレス

セキュリティポリシーで IP ホワイトリストが必要な場合は、接続を成功させるために Treasure Data の IP アドレスを許可リストに追加する必要があります。

リージョンごとに整理された静的 IP アドレスの完全なリストは、次のリンクにあります: https://api-docs.treasuredata.com/en/overview/ip-addresses-integrations-result-workers/

TD ConsoleからOracle Eloquaをインポート

認証の作成

最初のステップは、認証情報のセットを使用して新しい認証を作成することです。

  1. Integrations Hubを選択します。

  2. Catalogを選択します。

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

  1. Credentialsタブが選択されていることを確認し、統合のための認証情報を入力します。

認証フィールド

ParameterDescription
Authentication MethodBasic (デフォルト)
Eloqua Site NameOracle EloquaサイトのURL
UsernameOracle Eloquaアカウントのユーザー名
Passwordアカウントのパスワード
  1. Continueを選択します。

  2. 認証の名前を入力し、Doneを選択します。

ソースの作成

  1. TD Consoleを開きます。

  2. Integrations Hub > Authenticationsに移動します。

  3. 新しい認証を見つけて、New Sourceを選択します。

接続の作成

接続タブで、以下の情報を入力し、Nextを選択します。

ParameterDescription
Data Transfer Name転送の名前を定義できます。
Authentication転送に使用される認証名。

ソーステーブルの識別

Source Tableタブで以下の情報を入力し、Nextを選択します。

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

データ設定の定義

Data Settingタブで以下の情報を入力し、Nextを選択します。

ParameterDescription
Max retry count per API callAPI呼び出しごとの最大リトライ回数
Initial retry interval per API callAPI呼び出しごとの初期リトライ間隔(ミリ秒)
Max retry interval per API callAPI呼び出しごとの最大リトライ間隔(ミリ秒)
HTTP Connect Timeoutミリ秒単位、デフォルト: 3分
HTTP Read Timeoutミリ秒単位、デフォルト: 3分

データのプレビュー

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

データ配置の定義

データ配置では、データを配置するターゲットのデータベースとテーブルを選択し、インポートの実行頻度を指定します。

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

  2. オプションで、データベース名を入力します。

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

  4. オプションで、テーブル名を入力します。

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

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

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

  8. 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 を選択します。
  9. Create & Run Now を選択します。

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

CLI (Toolbelt) 経由での Oracle Eloqua からのインポート

コネクターをセットアップする前に、最新の TD Toolbelt をインストールしてください。バージョン 0.11.9 以降が必要です。

バージョンを確認するには:

$ td --version
0.16.10

シード設定ファイルの作成 (seed.yml)

in:
  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_nameEloqua サイト名
usernameユーザー名stringyesN/A
passwordパスワードstringyesN/A
targetcontact または activitystringyescontact
data_typeEmailOpen, Bounceback, Unsubscribe, EmailSend, Subscribe, EmailClickthrough,WebVisit, PageView, FormSubmit, External Activityyes, activity target の場合EmailOpen
import_fieldsデータタイプ contact に対してインポートされるフィールド名。この値が設定されておらず、contact データタイプが 250 個以上のフィールドを持つ場合、最初の 250 個のフィールドがインポートされます。その他のフィールドはスキップされます。stringno
start_timeレコードの取得を開始する日時を指定します。フォーマット yyyy-MM-dd'T'hh:mm:ss.SSS'Z' (例: '2018-05-07T00:00:00Z')。排他的stringyesN/A
end_timeレコードを取得する許容期間を指定します。フォーマット yyyy-MM-dd'T'hh:mm:ss.SSS'Z' (例: '2018-05-08T00:00:00Z')。包括的stringyesN/A
incremental"mode: append" の場合は true、"mode: replace" の場合は falseboolnotrue
incremental_fieldこのフィールドに基づいて増分処理を行います。サポートされる値: ActivityDate、LinkedToContactDate、CampaignResponseCreatedAtstringyes, activity データタイプ WebVisit、PageView の場合ActivityDate
update_end_time終了時間がジョブの実行時間より大きい場合、クエリの終了時間を更新します。増分ジョブのみサポートされます。boolnofalse
modeターゲットテーブルのレコードを append または replace します。replace モードでは、ターゲットテーブルに手動で加えられたスキーマ変更はそのまま保持されます。stringyesAppend

contact フィールド名のリストの取得

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-table

スケジュール実行

Eloqua Importコネクタの定期的なデータコネクタ実行をスケジュールすることができます。この機能を使用することで、cronデーモンを使用する必要がなくなります。ただし、高可用性を確保するために、スケジューラを慎重に設定することを推奨します。

td connector:createコマンドを使用して新しいスケジュールを作成できます。以下を指定する必要があります:

  • スケジュールの名前
  • cron形式のスケジュール
  • データが保存されるデータベースとテーブル
  • データコネクタ設定ファイル
$ td connector:create     daily_eloqua_import     "9 0 * * *"     td_sample_db     td_sample_table     load.yml

cronパラメータは、@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_table

td 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 set

スケジュールの削除

td connector:deleteは、スケジュールを削除します。

$ td connector:delete daily_eloqua_import