Roktは、取引時点(購入直後など)にパーソナライズされたオファーや広告を表示することを専門とするEコマースエンゲージメント・収益化プラットフォームです。
このドキュメントでは、Secure FTP(SFTP) を使用してカスタムオーディエンスリストとコンバージョンデータをアップロードすることで、Treasure Data CDPとRoktを統合する方法について説明します。ファイルベースの統合を活用することで、企業はリアルタイムAPI接続に依存せずに、主要なマーケティングデータの同期を自動化できます。
目標: CDPで構築されたオーディエンスセグメントを活用してオファーターゲティングを改善する。
ユースケース:
- 顧客が既に所有している製品/サービスのオファーを抑制する(例:既存のクレジットカード保有者を除外)。
- VIPまたはロイヤルカスタマーに対して高価値オファーを優先する。
目標: CDP拡張属性(推測された興味、ロイヤルティスコアなど)を活用してRoktエクスペリエンスをパーソナライズする。
ユースケース:
- 年齢層、製品親和性、解約リスクなどのCDP生成属性を使用して、Roktのオファー選択に影響を与える。
目標: CDPからコンバージョンイベント(購入、サインアップ、キャンセルなど)をエクスポートし、ファイルアップロード経由でRoktに送信する。
ユースケース:
- キャンペーン最適化を強化する。
- アトリビューションの精度を向上させる。
- Roktアカウントマネージャーに連絡してSFTP認証情報を取得してください。
- CDPの親セグメントにプレーンテキストメールまたはSHA-256ハッシュ化メールのいずれかが含まれていることを確認してください。
セキュリティポリシーで IP ホワイトリストが必要な場合は、接続を成功させるために Treasure Data の IP アドレスを許可リストに追加する必要があります。
リージョンごとに整理された静的 IP アドレスの完全なリストは、次のリンクにあります: https://api-docs.treasuredata.com/en/overview/ip-addresses-integrations-result-workers/
RoktはSFTP経由で以下のインポートをサポートしています:
- カスタムオーディエンスリスト: キャンペーンでのインクルージョンまたはエクスクルージョンターゲティング用。
- コンバージョンデータ: キャンペーン測定、最適化、およびアトリビューション用。
詳細については、以下を参照してください:
- Import custom audiences | Rokt documentation
- Import conversions via file transfer | Rokt documentation
クエリを実行する前に、TD Consoleでデータ接続を作成および設定する必要があります。データ接続の一部として、以下の手順で統合にアクセスするための認証を提供します:
TD Consoleを開きます。
Integrations Hub > Catalogに移動します。
SFTP_V2を検索し、Create Authenticationを選択します。

接続認証情報を提供します。

認証フィールド
| Parameter | Data Type | Description |
|---|---|---|
| Host Required | string | ftp.rokt.com |
| Port Required | string | 22 |
| User Required | string | リモートFTPインスタンスへの接続に使用されるユーザー名 |
| Authentication mode Required | string | Public / Private key pairを選択してください。 |
| Secret key file Optional | string | Rokt SFTPへのアクセスを依頼するには、Roktアカウントマネージャーにお問い合わせください。アクセスが許可されると、「You've been granted access to Rokt's SFTP server.」という件名のRoktからのメールを受信します。 |
| Passphrase for secret key file Optional | string | 一部のアルゴリズムで必要な、提供されたシークレットファイルのパスフレーズ |
| Retry limit Required | int | 失敗した接続を再試行する回数(デフォルト10) |
| Timeout Required | int | 接続タイムアウト(秒単位、デフォルト600) |
- Continueを選択し、Authenticationの名前を入力します。
- Doneを選択します。
TD Consoleは、データをエクスポートする複数の方法をサポートしています。Data Workbenchからデータをエクスポートするには、以下の手順を完了してください。
Data Workbench > Queriesに移動します。
New Queryを選択し、クエリを定義します。
Export Resultsを選択し、データエクスポート設定を提供します。
既存の統合を使用するか、新しい統合を作成します。
エクスポートパラメータを設定し、Doneを選択します。

エクスポート設定パラメータ
| Parameter | Data Type | Description |
|---|---|---|
Is user directory Root? Required | boolean | 「No」を選択してください |
Path prefix Required | string | Rokt SFTPサーバーの以下のディレクトリにファイルをアップロードします:
|
Rename file after upload finish Required | string | 選択した場合、ファイルは |
Format Required | string |
|
Encoders Required | string |
|
Header line? Required | string |
|
Delimiter Required | string | 区切り文字:
|
Quote policy Optional | string | 引用符のポリシー:
|
Null string Required | string | クエリ結果のnull値の表示方法:
|
End-of-line character Required | string | EOL(行末)文字:
|
Temp filesize threshold Required | long | エクスポートデータがこのしきい値より大きい場合、アップロードはしきい値自体のバッチサイズでバッチ実行されます。 |
Scheduled Jobs と Result Export を使用して、指定したターゲット宛先に出力結果を定期的に書き込むことができます。
Treasure Data のスケジューラー機能は、高可用性を実現するために定期的なクエリ実行をサポートしています。
2 つの仕様が競合するスケジュール仕様を提供する場合、より頻繁に実行するよう要求する仕様が優先され、もう一方のスケジュール仕様は無視されます。
例えば、cron スケジュールが '0 0 1 * 1' の場合、「月の日」の仕様と「週の曜日」が矛盾します。前者の仕様は毎月 1 日の午前 0 時 (00:00) に実行することを要求し、後者の仕様は毎週月曜日の午前 0 時 (00:00) に実行することを要求するためです。後者の仕様が優先されます。
Data Workbench > Queries に移動します
新しいクエリを作成するか、既存のクエリを選択します。
Schedule の横にある None を選択します。

ドロップダウンで、次のスケジュールオプションのいずれかを選択します:

ドロップダウン値 説明 Custom cron... Custom cron... の詳細を参照してください。 @daily (midnight) 指定されたタイムゾーンで 1 日 1 回午前 0 時 (00:00 am) に実行します。 @hourly (:00) 毎時 00 分に実行します。 None スケジュールなし。

| Cron 値 | 説明 |
|---|---|
0 * * * * | 1 時間に 1 回実行します。 |
0 0 * * * | 1 日 1 回午前 0 時に実行します。 |
0 0 1 * * | 毎月 1 日の午前 0 時に 1 回実行します。 |
| "" | スケジュールされた実行時刻のないジョブを作成します。 |
* * * * *
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +---------- month (1 - 12)
| | +--------------- day of month (1 - 31)
| +-------------------- hour (0 - 23)
+------------------------- min (0 - 59)次の名前付きエントリを使用できます:
- Day of Week: sun, mon, tue, wed, thu, fri, sat.
- Month: jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.
各フィールド間には単一のスペースが必要です。各フィールドの値は、次のもので構成できます:
| フィールド値 | 例 | 例の説明 |
|---|---|---|
| 各フィールドに対して上記で表示された制限内の単一の値。 | ||
フィールドに基づく制限がないことを示すワイルドカード '*'。 | '0 0 1 * *' | 毎月 1 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。 |
範囲 '2-5' フィールドの許可される値の範囲を示します。 | '0 0 1-10 * *' | 毎月 1 日から 10 日までの午前 0 時 (00:00) に実行するようにスケジュールを設定します。 |
カンマ区切りの値のリスト '2,3,4,5' フィールドの許可される値のリストを示します。 | 0 0 1,11,21 * *' | 毎月 1 日、11 日、21 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。 |
周期性インジケータ '*/5' フィールドの有効な値の範囲に基づいて、 スケジュールが実行を許可される頻度を表現します。 | '30 */2 1 * *' | 毎月 1 日、00:30 から 2 時間ごとに実行するようにスケジュールを設定します。 '0 0 */5 * *' は、毎月 5 日から 5 日ごとに午前 0 時 (00:00) に実行するようにスケジュールを設定します。 |
'*' ワイルドカードを除く上記の いずれかのカンマ区切りリストもサポートされています '2,*/5,8-10' | '0 0 5,*/10,25 * *' | 毎月 5 日、10 日、20 日、25 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。 |
- (オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。
クエリに名前を付けて保存して実行するか、単にクエリを実行します。クエリが正常に完了すると、クエリ結果は指定された宛先に自動的にエクスポートされます。
設定エラーにより継続的に失敗するスケジュールジョブは、複数回通知された後、システム側で無効化される場合があります。
(オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。
Audience Studio で activation を作成することで、segment データをターゲットプラットフォームに送信することもできます。
- Audience Studio に移動します。
- parent segment を選択します。
- ターゲット segment を開き、右クリックして、Create Activation を選択します。
- Details パネルで、Activation 名を入力し、前述の Configuration Parameters のセクションに従って activation を設定します。
- Output Mapping パネルで activation 出力をカスタマイズします。

- Attribute Columns
- Export All Columns を選択すると、変更を加えずにすべての列をエクスポートできます。
- + Add Columns を選択して、エクスポート用の特定の列を追加します。Output Column Name には、Source 列名と同じ名前があらかじめ入力されます。Output Column Name を更新できます。+ Add Columns を選択し続けて、activation 出力用の新しい列を追加します。
- String Builder
- + Add string を選択して、エクスポート用の文字列を作成します。次の値から選択します:
- String: 任意の値を選択します。テキストを使用してカスタム値を作成します。
- Timestamp: エクスポートの日時。
- Segment Id: segment ID 番号。
- Segment Name: segment 名。
- Audience Id: parent segment 番号。
- + Add string を選択して、エクスポート用の文字列を作成します。次の値から選択します:
- Schedule を設定します。

- スケジュールを定義する値を選択し、オプションでメール通知を含めます。
- Create を選択します。
batch journey の activation を作成する必要がある場合は、Creating a Batch Journey Activation を参照してください。
TD Toolbeltを使用すると、CLIからSFTPへのクエリ結果のエクスポートをトリガーできます。td queryコマンドの--resultオプションを使用して、エクスポートジョブのパラメータを指定する必要があります。詳細については、Querying and Importing Data to Treasure Data from the Command Lineを参照してください。
オプションの形式はJSONであり、一般的な構造は以下のとおりです:
ユーザー名とパスワードを使用した認証
{
"type": "sftp_v2",
"host": "IP or host of SFTP server",
"port": 22,
"path_prefix": "/upload/2024Aug29/TC01.csv",
"temp_file_threshold": 1024,
"timeout": 600,
"user_directory_is_root": false,
"rename_file_after_upload": true,
"auth_method": "password",
"username": "login user",
"password": "password of user when auth_method is password"
}公開鍵/秘密鍵ペアを使用した認証
{
"type": "sftp_v2",
"host": "IP or host of SFTP server",
"port": 22,
"path_prefix": "/upload/2024Aug29/TC01.csv",
"temp_file_threshold": 1024,
"timeout": 600,
"user_directory_is_root": false,
"rename_file_after_upload": true,
"auth_method": "key_pair",
"secret_key_file": "Content of private key file",
"secret_key_passphrase": "td@123"
}| Name | Description | Value | Default Value | Required |
|---|---|---|---|---|
| type | タイプは sftp_v2 である必要があります | String | NULL | YES |
| host | IPアドレスまたはドメイン名として指定されたSFTPサーバーのアドレス
| String | NULL | YES |
| port | SFTPサーバーとの接続のためのポート | Number | 22 | NO |
| user_directory_is_root | 一部のサーバーでは、ユーザーにはルートディレクトリであるホームディレクトリがあります。たとえば、johnという名前のユーザーのルートディレクトリ名が /home/john である場合があります。そのユーザーが /home/john/day1/my_data.csv という名前のディレクトリにファイルをアップロードする場合、2つのオプションがあります。
| String | False | NO |
| path_prefix | SFTPサーバー上でファイルをアップロードするパス。path_prefixの値は、user_directory_is_rootがtrueかfalseかによって異なります。 | String | NULL | YES |
| rename_file_after_upload | アップロード完了後にファイルの名前を変更するかどうかを決定します | Boolean | False | NO |
| temp_file_threshold | エクスポート中に使用される一時ファイルのサイズ。一時ファイルサイズに達すると、統合はそのファイルからデータを読み取り、リモートファイルに書き込んでから、一時ファイルを削除します。 | Number | 5,368,709,120 (5 Gb) | NO |
| auth_method | SFTPサーバーでの認証に使用される認証タイプを決定します。
| サポートされている値:
| key_pair | YES |
| username | 認証に使用されるユーザー名 | String | NULL | YES |
| password | 認証に使用されるパスワード | String | NULL | YES、auth_methodがpasswordの場合 |
secret_key_file | 認証に使用される秘密鍵ファイル。ファイルの内容は1行としてフォーマットする必要があります。 例 td ... --result '{"type":"sftp_v2", "secret_key_file": "-----BEGIN OPENSSH PRIVATE KEY-----\nline1\nline2\nline3\n-----END OPENSSH PRIVATE KEY-----\n\n"}'フォーマット前の秘密鍵ファイルの内容: -----BEGIN OPENSSH PRIVATE KEY-----
line1
line2
line3
-----END OPENSSH PRIVATE KEY-----フォーマット後 -----BEGIN OPENSSH PRIVATE KEY-----line1line2line3-----END OPENSSH PRIVATE KEY----- | String | NULL | YES、auth_methodがkey_pairの場合 |
| secret_key_passphrase | 秘密鍵がパスワード付きで生成された場合は、そのパスワードをここに入力します。 | String | NULL | NO |
| sequence_format | アップロードされるファイルのサフィックス名。例: "%03d.%02d" | String | Blank | NO |
| format | アップロードされるファイルの出力形式 | サポートされている値:
| csv | NO |
| encoders | 出力のエンコーダーのタイプを指定します | サポートされている値:
| "" | NO |
| public_key | 暗号化に使用する公開鍵 | String | ||
| key_identifier | ファイルを保護するために使用される暗号化サブキーのKey IDを指定します。マスターキーは暗号化プロセスから除外されます。(文字列、必須) | String | ||
| amor | 暗号化された出力にASCII armorを使用します(ブール値) | Boolean | ||
compression_type | 圧縮タイプは、暗号化する前にデータを圧縮するかどうかを決定します。 | サポートされている値
注意: 暗号化してアップロードする前にファイルを圧縮してください。復号化すると、ファイルは .gz や .bz2 などの圧縮形式に戻ります。 | ||
| delimiter | 列の区切り文字 | サポートされている値:
| "," | NO |
quote_policy | クォートの処理に関するポリシー | サポートされる値:
例:ポリシー ALL 設定: quote_policy: ALL,
quote: "'",出力 'id'|'column01'|'column02'|'column03'|'column04'|'column05'
'1'|'data01'|'data02'|'data03'|'data04'|'data05'例:ポリシー MINIMAL 設定: quote_policy: MINIMAL,
quote: "'",出力 id|column01|column02|column03|column04|column05
1|data01|data02|data03|data04|data05 | ||
quote | クォートにシングルクォートまたはダブルクォートのどちらを使用するかを決定します。 | シングルクォート 設定 quote_policy: ALL,
quote: "'",出力 'id'|'column01'|'column02'
'1'|'data01'|'data02'ダブルクォート 設定 quote_policy: ALL,
quote: "\"",出力 "id"|"column01"|"column02"
"1"|"data01"|"data02" | ||
| null_string | null列のデフォルト値を決定します。 | サポートされる値:
| "" | |
| newline | CSVファイルで改行を開始する方法を決定します。 | サポートされる値:
| CRLF |
パスワード認証を使用する場合
td --database your_db --wait "SELECT email FROM (VALUES ('test01@test.com')) tbl(email)" \ --type presto \ --result '{"type":"sftp_v2","host":"your_ip","port": 22,"auth_method":"password","username":"user_name","password":"your_pass", "user_directory_is_root": true, "rename_file_after_upload": true,"path_prefix":"/sftp/2024aug/test.csv"}'パスワード認証とデータ圧縮を使用する場合
td --database your_db --wait "SELECT email FROM (VALUES ('test01@test.com')) tbl(email)" \ --type presto \ --result '{"type":"sftp_v2","host":"your_ip","port": 22,"auth_method":"password","username":"user_name","password":"password","user_directory_is_root":true,"path_prefix":"/sftp/2024aug/test.csv","rename_file_after_upload":true,"format": "csv", "compression": "gz","header_line":true,"quote_policy":"ALL","delimiter":"\t","null_string":"","newline":"CRLF","temp_file_threshold":0,"sequence_format":".%01d%01d"}'パスワードフレーズ付きの公開鍵/秘密鍵認証を使用する場合
秘密鍵ファイルの内容(パスワードフレーズは
123):-----BEGIN OPENSSH PRIVATE KEY----- line1 line2 line3 -----END OPENSSH PRIVATE KEY-----CLIのフォーマット:
-----BEGIN OPENSSH PRIVATE KEY-----\nline1\nline2\nline3\n-----END OPENSSH PRIVATE KEY-----\n\nCLIコマンド:
td --database your_db --wait "SELECT email FROM (VALUES ('test01@test.com')) tbl(email)" \ --type presto \ --result '{"type":"sftp_v2","host":"your_ip","port": 22,"auth_method":"key_pair","username":"user_name", "path_prefix": "/sftp/2024aug/test.csv","sequence_format":"","max_connection_retry":5,"secret_key_passphrase":"123","timeout":600,"secret_key_file":"-----BEGIN OPENSSH PRIVATE KEY-----\nline1\nline2\nline3\n-----END OPENSSH PRIVATE KEY-----\n\n"}'新規顧客を作成する場合
td --database luan_db --wait "SELECT customer_list_id,first_name,last_name,birthday,company_name,email,fax,gender,job_title,phone_business,phone_home,phone_mobile,second_name,credentials FROM (VALUES ('site_1','fname_201','lname_1','1990-05-12','Test Company',暗号化エンコーダーを使用する場合
td query -d luan_db -w "select * from luan_db.sfcc_500k" -T presto --result '{ "type": "sftp_v2", "host": "your host server", "auth_method": "password", "username": "your user name", "password": "your password", "path_prefix": "cli/test_27_3_500K.csv.bz2.gpg", "file_ext": ".gpg", "rename_file_after_upload": false, "formatter": { "type": "csv", "quote_policy": "MINIMAL", "delimiter": ",", "null_string": "null", "newline": "\n" }, "compression": "encrypt_pgp", "public_key": "your public key", "key_identifier": "your key identifier", "armor": true/false, "compression_type": "bzip2/gzip/none" }'
Treasure Workflowでは、このインテグレーションを使用してデータをエクスポートすることができます。サンプルワークフローについては、Treasure Boxesをご覧ください。
- 結果のエクスポートをスケジュール設定して、データを定期的にターゲットの宛先にアップロードできます
- ほとんどのインポートおよびエクスポートインテグレーションは、TD Workflowに追加して、より高度なデータパイプラインに組み込むことができます。詳細についてはこちらを参照してください。
Q: SFTPサーバーに接続できません。どうすればよいですか?
A: 以下の点を確認してください:
- プロトコルが有効であることを確認してください。SFTPを使用する場合は、このインテグレーションを使用できます。FTP/FTPSを使用する場合は、FTP Server Import Integrationで接続を試してください。
- ファイアウォールを使用している場合は、許可されたIP範囲とポートを確認してください。サーバー管理者は、セキュリティ上の理由から、デフォルトのポート番号TCP 22を変更することがあります。
- 秘密鍵がOpenSSH形式であることを確認してください。Treasure Dataは「PuTTY」などの他の形式をサポートしていません。
- Treasure DataはOpenSSH 7.8以降の秘密鍵のデフォルト形式をサポートしていません。'-m PEM'オプションを使用して鍵を再生成してください。
Q: SFTPサーバーにアップロードしたファイルが見つかりません。何が起こったのでしょうか?
A: SFTPサーバーがAppendモードをサポートしていない場合、インテグレーションは「SFTP Exception: no such file.」というエラーでファイルを更新できない可能性があります。安定性の理由から、インテグレーションはファイルコンテンツをバッチでアップロードします。そのため、SFTPサーバーでAppendモードを有効にする必要があります。SFTPサーバーでAppendモードを有効にできない場合は、この機能をバイパスするために temp_file_threshold を 0 に設定する必要があります。
注: ファイルを暗号化してアップロードする前に、必ず圧縮してください。
非組み込み暗号化を使用して復号化すると、ファイルは.gzや.bz2などの圧縮形式に戻ります。
組み込み暗号化を使用して復号化すると、ファイルは生データに戻ります。