# Google Cloud Storage Export Integration

ジョブ結果をGoogle Cloud Storageに直接書き込むことができます。Import Integrationについては、[Google Cloud Storage Import Integration](/ja/int/google-cloud-storage-import-integration)を参照してください。

## 前提条件

- [TD Toolbelt](https://toolbelt.treasuredata.com/)を含むTreasure Dataの基本知識
- 特定の権限を持つGoogle Cloud Platformアカウント


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

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

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

## 必要なGoogle Cloud Platform認証情報の取得

この機能を使用するには、以下が必要です。

- Google Project ID
- JSON認証情報
- GCSバケットにオブジェクトを作成するためのStorage Object Creatorロール
- GCSバケット内のオブジェクトをリストするためのStorage Object Viewerロール


### Google Cloud Storageで宛先バケットを取得する

Cloud Storageバケットをリストします。これらは名前の辞書順にリストされます。

プロジェクト内のバケットをリストするには:

1. Google Cloud ConsoleでCloud Storageブラウザを開きます。
2. 必要に応じて、フィルタリングを使用してリスト内の結果を絞り込みます。


現在選択されているプロジェクトの一部であるバケットがブラウザリストに表示されます。

### Google Cloud Storageで宛先バケットをオプションで作成する

新しいストレージバケットを作成するには:

1. Google Cloud ConsoleでCloud Storageブラウザを開きます。
2. **Create bucket**を選択してバケット作成フォームを開きます。


![](/assets/image2021-3-30_12-5-39.f85b2072cd53edff38ce47c1486e908014d84b076a06266368cabfd1f17f9752.d7746214.png)

1. バケット情報を入力し、各ステップを完了するために**Continue**を選択します:
  - バケット名の要件に従って**Name**を指定します。
  - バケットデータが永続的に保存される**Location type**と**Location**を選択します。
  - バケットの**Default storage class**を選択します。デフォルトのストレージクラスは、バケットにアップロードされるすべてのオブジェクトにデフォルトで割り当てられます。
右側のペインの**Monthly cost estimate**パネルは、選択したストレージクラスとロケーション、および予想されるデータサイズと操作に基づいて、バケットの月間コストを見積もります。
  - **Access control**モデルを選択して、バケットのオブジェクトへのアクセスを制御する方法を決定します。
  - 必要に応じて、バケットラベルの追加、保持ポリシーの設定、暗号化方法の選択ができます。
2. **Create**を選択します。


### Google JSON認証情報を取得する

Google Cloud Storageとの統合は、サーバー間API認証に基づいています。

JSON認証情報の生成に使用されるService Accountには、宛先バケットに対するStorage Object Creator権限とStorage Object Viewer権限が必要です。

1. Google Developer Consoleにアクセスします。
2. 左側のメニューのAPIs & authの下にあるCredentialsを選択します。
3. Service accountを選択します:
![](/assets/image-20191107-183125.bff0af4ff0b2d698ddac8f767fff865e734555f5d3d52c97ddd40f2e132142b2.d7746214.png)
4. Googleが推奨するJSON形式のキータイプを選択します。キーはブラウザによって自動的にダウンロードされます。
![](/assets/image-20191107-183435.4040ec4b0f373fc49ce9988f50924b047dee9b7774609f68f26894f5fc6fcc8a.d7746214.png)


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

### 新しいAuthenticationを作成する

Treasure Dataでは、クエリを実行する前にデータ接続を作成して設定する必要があります。データ接続の一部として、統合にアクセスするための認証を提供します。

1. **Treasure コンソール**を開きます。
2. **Integrations Hub** > **Catalog**に移動します。
3. Google Cloud Storageを検索して選択します。
![](/assets/image2021-3-30_12-15-11.ab3a79a166262d667599558e54d20a5c7fb976dc8c51d698c1fc8a5415c2b8d8.d7746214.png)
4. **Create Authentication**を選択します。
5. 認証するための認証情報を入力します。
![](/assets/image2021-3-30_12-21-43.cfd52597fdb9c849b4dcd1b589fd0d2ca3a0787495ba62c69ef078c3b011a037.d7746214.png)
6. 接続の名前を入力します。
7. **Continue**を選択します。


## クエリを定義する

1. [Creating a Destination Integration](/products/customer-data-platform/integration-hub/batch/export/creating-a-destination-integration)の手順を完了します。
2. **Data Workbench > Queries**に移動します。
3. データをエクスポートするクエリを選択します。
4. クエリを実行して結果セットを検証します。
5. **Export Results**を選択します。
6. 既存の統合認証を選択します。
![](/assets/google-cloud-storage-export-integration-2024-08-13.1c74570eefcf79f633e3ab3bec247ede3394d9cc9a5255a108c797b55dfeed2e.d7746214.png)
7. 追加のExport Resultsの詳細を定義します。エクスポート統合コンテンツで、統合パラメータを確認してください。たとえば、Export Results画面が異なる場合や、入力する追加の詳細がない場合があります。
![](/assets/google-cloud-storage-export-integration-2024-08-13-1.8d763bbfd78f9cf1d1cc3e7e2916ad78d532bce9da38669ab0b28904e28ae233.d7746214.png)
8. **Done**を選択します。
9. クエリを実行します。
10. 指定した宛先にデータが移動したことを検証します。


### Google Cloud Storageの統合パラメータ

| パラメータ | 値 | 説明 |
|  --- | --- | --- |
| `bucket` |  | 宛先Google Cloud Storageバケット名(文字列、必須)。 |
| `path_prefix` |  | ファイル名を含むオブジェクトパスプレフィックス(文字列、必須)。例: `/path/to/filename.csv`。 |
| `content_type` |  | 出力ファイルのMIMEタイプ(文字列、オプション)。デフォルト: `application/octet-stream`。 |
| `format` | `csv`, `tsv` | 出力ファイル形式(文字列、必須)。 |
| `compression` | `none`, `gz`, `bzip2`, `zip_builtin`, `zlib_builtin`, `bzip2_builtin` | エクスポートされたファイルに適用される圧縮(文字列、オプション)。デフォルト: `none`。 |
| `header_line` | `true`, `false` | 最初の行として列名を持つヘッダー行を書き込む(ブール値、オプション)。デフォルト: `true`。 |
| `delimiter` | `,`, `\t`, ` | `, 1バイト文字 |
| `null_string` |  | NULL値の置換文字列(文字列、オプション)。デフォルト: CSVの場合は空文字列、TSVの場合は`\N`。 |
| `end_of_line_character` | `CRLF`, `LF`, `CR` | 行終端文字(文字列、オプション)。デフォルト: `CRLF`。 |


### クエリの例


```sql
SELECT
  c0 AS EMAIL
FROM
  e_1000
WHERE c0 != 'email'
```

### Export Resultsの検証

クエリが正常に完了すると、結果は指定したGoogle Cloud Storageの宛先に自動的にインポートされます:

![](/assets/image-20191107-183557.20e88d749df90fa6376351d0cdbe4e628d255ab5d27d0a0d06ed8b0c7c529b71.d7746214.png)

## 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) を参照してください。

## Google Cloud Storage CLIからのデータエクスポート

次のコマンドを使用すると、クエリ結果をGoogle Cloud Storageに送信するスケジュールされたクエリを設定できます。

- 次のサンプル構文でJSONキーを指定します。
- コード構文を壊さずに行を分割するにはバックスラッシュを使用します。



```json
'{"type":"gcs","bucket":"samplebucket","path_prefix":"/output/test.csv","format":"csv","compression":"","header_line":false,"delimiter":",","null_string":"","newline":"CRLF",  "json_keyfile":"{\"private_key_id\": \"ABCDEFGHIJ\", \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nABCDEFGHIJ\\ABCDEFGHIJ\\n-----END PRIVATE KEY-----\\n\", \"client_email\": \"ABCDEFGHIJ@developer.gserviceaccount.com\", \"client_id\": \"ABCDEFGHIJ.apps.googleusercontent.com\", \"type\": \"service_account\"}"}'
```

例えば、


```bash
$ td sched:create scheduled_gcs "10 6 * * *" \
-d dataconnector_db "SELECT id,account,purchase,comment,time FROM data_connectors" \
-r '{"type":"gcs","bucket":"samplebucket","path_prefix":"/output/test.csv","format":"csv","compression":"","header_line":false,"delimiter":",","null_string":"","newline":"CRLF",  "json_keyfile":"{\"private_key_id\": \"ABCDEFGHIJ\", \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nABCDEFGHIJ\\ABCDEFGHIJ\\n-----END PRIVATE KEY-----\\n\", \"client_email\": \"ABCDEFGHIJ@developer.gserviceaccount.com\", \"client_id\": \"ABCDEFGHIJ.apps.googleusercontent.com\", \"type\": \"service_account\"}"}'
```

**オプション**

| オプション | 値 |
|  --- | --- |
| `format` | `csv`または`tsv` |
| `compression` | `""`または`gz` |
| `null_string` | `""`または`\N` |
| `newline` | `CRLF`、`CR`、または`LF` |
| `json_keyfile` | 改行`\n`をバックスラッシュでエスケープ |


## その他の設定

- Result Exportは、ターゲットの宛先に定期的にデータをアップロードするために[スケジュール](/products/customer-data-platform/data-workbench/queries/scheduled/scheduling-a-query)できます。
- すべてのimportおよびexport integrationは、[Treasure ワークフロー](/products/customer-data-platform/data-workbench/workflows)に追加できます。**td**オペレーターを使用して、クエリ結果を指定したコネクタにエクスポートできます。詳細については、[Workflow Operators](/products/customer-data-platform/data-workbench/workflows/operators)を参照してください。


## 参考資料

[The Embulk-encoder-Encryption document](/ja/int/embulk-encoder-encryption-pgp)

## GCS Data ConnectorのFAQ

注意: 暗号化してアップロードする前に、ファイルを圧縮してください。

1. 非ビルトイン暗号化を使用して復号化する場合、ファイルは.gzや.bz2などの圧縮形式に戻ります。
2. ビルトイン暗号化を使用して復号化する場合、ファイルは生データに戻ります。