# Web Server and HTTP Put Endpoint Export Integration

Treasure DataからWebサーバーまたはPUTリクエストを受け入れるHTTP APIにジョブ結果を直接書き込むことができます。

## 前提条件

- [TD Toolbelt](https://toolbelt.treasuredata.com/)を含むTreasure Dataの基本的な知識。
- PUTリクエストとしてクエリ結果を受け入れるように設定されたWebサーバー。


## Treasure Data Integration の静的 IP アドレス

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

リージョンごとに整理された静的 IP アドレスの完全なリストは、次のリンクにあります:
[IP Addresses for Integrations](/apis/endpoints/ip-addresses-integrations-result-workers)

## Treasure コンソールを使用して接続を作成する

Treasure コンソールを使用して接続を設定できます。

### 新しい接続を作成する

TD Catalogに移動し、統合を検索して選択します。

### Webサーバー接続の詳細を取得する

必要に応じて、HTTPエンドポイントにアクセスするための認証情報を取得します。

### クエリを記述する

Treasure コンソールクエリエディタページに移動し、クエリをコンパイルします。

### 結果エクスポートの詳細を指定する

クエリの設定が完了したら、クエリエディタの右上にある**Export Results**を選択します。

![](/assets/image-20191107-200348.5827697cbd1a5c4160dab7ef09d1e1680b6e89e109d912cd2dc36c5dc3640399.f854537a.png)

Choose Integrationダイアログが開きます。検索ボックスに接続名を入力してフィルタし、接続を選択します。Create Integrationペインで、ドロップダウンメニューからHTTP PUTを選択します。該当する場合は、*Host、Port、ユーザー名とパスワード*を含むすべての情報を編集します。

![](/assets/image-20191107-200437.4506a6e4c8f3917970e6779c816bc6cdec89aef7c4f88e10eb5c66c9d65b5e44.f854537a.png)

ポート番号が指定されていない場合、デフォルト値はHTTPの場合は80、HTTPSの場合は443です。ユーザー名とパスワードが指定されていない場合、認証は使用されません。

**Save and Continue**を選択します。

### 転送設定を設定する

接続を設定した後、転送パラメータを設定します。エンドポイントのパスとパラメータ情報を入力します。

![](/assets/image-20191107-200517.7c6488d204aab972ee27a0349a4e91ed2d58f4f7f4cf07863987ba66e448e224.f854537a.png)

### ドメインフィールド設定

hostフィールドにはドメイン情報のみを入力します。hostフィールドにURLパスを含めないでください。次の例は、エンドポイントURLとそれぞれの値を示しています。

**エンドポイント例 #1:** http://www.yourdomain.com:80/api/custom_resources/resources

**Host**: www.yourdomain.com

**Port**: 80

**Path & Params:** /api/custom_resources/resources

**エンドポイント例 #2:** http://testapis.co/rest/api

**Host**:testapis.co

**Path & Params:** /rest/api

**エンドポイント例 #3:** http://www.randomapi.com/rest/api?parameter1

**Host**:www.randomapi.com

**Path & Params:** /rest/api?parameter1

### クエリを実行する

名前を付けてクエリを保存して実行するか、クエリを実行するだけです。クエリが正常に完了すると、クエリ結果はPUTリクエストを使用して指定されたエンドポイントに自動的にエクスポートされます。

## Audience Studio で Segment をアクティベートする

Audience Studio で activation を作成することで、segment データをターゲットプラットフォームに送信することもできます。

1. **Audience Studio** に移動します。
2. parent segment を選択します。
3. ターゲット segment を開き、右クリックして、**Create Activation** を選択します。
4. **Details** パネルで、Activation 名を入力し、前述の Configuration Parameters のセクションに従って activation を設定します。
5. **Output Mapping** パネルで activation 出力をカスタマイズします。


![](/assets/ouput.b2c7f1d909c4f98ed10f5300df858a4b19f71a3b0834df952f5fb24018a5ea78.8ebdf569.png)

- 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 番号。


1. **Schedule** を設定します。


![](/assets/snippet-output-connector-on-audience-studio-2024-08-28.a99525173709da1eb537f839019fa7876ffae95045154c8f2941b030022f792c.8ebdf569.png)

- スケジュールを定義する値を選択し、オプションでメール通知を含めます。


1. **Create** を選択します。


batch journey の activation を作成する必要がある場合は、[Creating a Batch Journey Activation](/products/customer-data-platform/journey-orchestration/batch/creating-a-batch-journey-activation) を参照してください。

## CLIからの使用

HTTPエンドポイントへの結果エクスポートにCLIを使用することもできます。

### オンデマンドジョブの場合

オンデマンドジョブの場合は、td queryコマンドに--resultオプションを追加するだけです。ジョブが完了すると、結果はPUTリクエストを介して指定されたURLに送信されます。


```bash
$ td query
  --result 'web://domain.com/path'
  -w -d testdb
  "SELECT code, COUNT(1) AS cnt FROM www_access GROUP BY code"
```

または、method=postクエリパラメータでPOSTリクエストを実行します。


```bash
$ td query
  --result 'web://domain.com/path?method=post'
  -w -d testdb
  "SELECT code, COUNT(1) AS cnt FROM www_access GROUP BY code"
```

別のURL例を次に示します。[Basic HTTP認証](http://en.wikipedia.org/wiki/Basic_access_authentication)とポート指定がサポートされています。


```
web://user:pass@domain.com:8080/path1/path2
```

プロトコルヘッダーとしてwebの代わりにwebsを使用すると、HTTPS経由の転送もサポートされます。例：


```
webs://securedomain.com/path1/path2
```

ポート番号が指定されていない場合、デフォルト値はHTTPの場合は80、HTTPSの場合は443です。ユーザー名とパスワードが指定されていない場合、認証は使用されません。

リクエストボディは、次のフィールドを持つJSONです：column_names、column_types、およびdata（クエリの結果）。上記のクエリが出力する可能性のある例を以下に示します。


```json
{ "column_names": [ "code", "cnt" ],
  "column_types": [ "string", "long" ],
  "data": [ [ "200", 4981 ], [ "500", 2 ], [ "404", 17 ] ] }
```

最大行数は100,000です。結果が100,000行を超える場合、残りの行は破棄されます。

### スケジュールされたジョブの場合

スケジュールされたジョブの場合は、ジョブをスケジュールするときに--resultオプションを追加するだけです。ジョブが実行されるたびに、オンデマンドジョブと同じ方法でPUTリクエストを介して結果が送信されます。


```
$ td result:create myweb web://domain.com/
$ td sched:create hourly_count_example "0 * * * *"
  -d testdb
  --result myweb:path
  "SELECT code, COUNT(1) AS cnt FROM www_access GROUP BY code"
```