# Google Bigquery Export Integration

[Google BigQuery Import Integrationについてはこちら](/ja/int/google-bigquery-import-integration)をご覧ください。

ジョブの結果をGoogle BigQueryに直接書き込むことができます。[Google BigQueryからデータをインポート](/ja/int/google-bigquery-import-integration)する方法もご確認いただけます。

## 前提条件

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


## 要件と制限事項

- ARRAYのようなネストされたデータ型や繰り返しデータ型は、宛先カラムとしてサポートされていません。


## サポート内容

Treasure Dataは「append、replace、replace backup、delete」モードをサポートしています。

## Google Cloud Platformの認証情報を取得する

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

- Project ID
- JSON Credential


### JSON Credentialを取得する

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

1. Google Developer Consoleに移動します。
2. APIs & auth > Credentialsを選択します。
3. Service accountを選択します。
![](/assets/image-20191020-190647.052807b7e694bcb32df29765d915392f79ccb6edd0897f35ecb4c142ab6c1e20.b6ab3c42.png)
4. Googleが推奨するJSONベースのキータイプを選択します。キーはブラウザによって自動的にダウンロードされます。


![](/assets/image-20191020-190703.7d05851cf5d88ecc94508d0db2fdf995434deb98a0c0f88e7aaa0eb9ff973520.b6ab3c42.png)

### Project IDを取得する

1. Google Developer Consoleに移動します。
2. Homeを選択します。
3. Project IDを確認します。


![](/assets/image-20191020-190726.aa7391fe23cf6e91102e8f6fefdd0a3305df9765947bf94a8fbddd4b98b25853.b6ab3c42.png)

## BigQuery上でDatasetとTableを作成する

BigQueryコンソールからDatasetとTableを作成します。

## Treasure コンソールから使用する

1. Treasure コンソールに移動します。
2. Integrations Hub > Catalogに移動します。
3. Google Big Queryを選択します。
![](/assets/image-20200522-020015.5a39c9b58816af9004a574866c8ddb944c69cfb1c24b7f8866d5f01372cbbc74.b6ab3c42.png)
4. 以下の通り、すべての情報を入力します:
![](/assets/image-20200522-020049.a7151cbd1f128e331e167c6e8be6cba0c7fa4299e7223799724c9c4da331b421.b6ab3c42.png)


クエリを記述します。クエリ結果はBigQuery上で事前に定義されたスキーマと一致する必要があります。ジョブを実行すると、Treasure Dataのクエリ結果が自動的にGoogle BigQueryにインポートされます。

### Appendモード

BigQueryにテーブルがすでに存在する場合、以下のようなペインが表示されます:

![](/assets/image-20191020-190812.bcec0ca2989af8eabd467c707a6392198218b82a18aaa5441707cbc4e18951c8.b6ab3c42.png)

BigQueryから取得したProject ID、Dataset Name、Table Nameを入力します。

クエリを記述します。クエリ結果はBigQuery上で事前に定義されたスキーマと一致する必要があります。ジョブを実行すると、Treasure Dataのクエリ結果が自動的にGoogle BigQueryにインポートされます。

BigQueryにテーブルが存在しない場合:

![](/assets/image-20191020-190826.c53f438f3905bcc18ee702a08cf011dae0715c974e4e9184bcc748b238b9b886.b6ab3c42.png)

BigQueryから取得したProject ID、Dataset Nameを入力します。

BigQuery Datasetに作成されるテーブルの名前を指定します。Auto-create tableをチェックし、新しいテーブルのスキーマを提供します。Schema JSONはクエリ結果（フィールド数とデータ型）と一致する必要があります。ジョブを実行すると、入力した名前とスキーマを持つ新しいテーブルが作成され、Treasure Dataのクエリ結果が自動的にこのテーブルにインポートされます。

Schema JSONの例:

[{"name":"id","type":"INTEGER","mode": "REQUIRED"},{"name":"name","type":"STRING"}]

### Replaceモード

以下のようなペインが表示されます:

![](/assets/image-20191020-190841.955517c31c4d7c151c04e54fb1b712a2a32a96c2867ffc85191de7b977cbc2c1.b6ab3c42.png)

BigQueryから取得したProject ID、Dataset Name、Table Nameを入力します。

Auto-create tableを選択し、置き換えるテーブルのスキーマを提供します。Schema JSONフィールドの値はクエリ結果（フィールド数とデータ型）と一致する必要があります。ドロップダウンからReplaceを選択します。ジョブを実行すると、BigQueryにテーブルがすでに存在する場合、またはSchema JSONの値がテーブルスキーマと異なる場合、テーブルは置き換えデータとして処理されます。BigQueryにテーブルが存在しない場合、入力した名前とスキーマを持つ新しいテーブルが作成されます。Treasure Dataのクエリ結果が自動的にこのテーブルにインポートされます。

### Replace Backupモード

以下のようなペインが表示されます:

![](/assets/image-20191020-190908.c978ef79db52ba766dfbc4eb14e7a3cd229a132478363ae521605639aeb435e2.b6ab3c42.png)

Replace backupモードはreplaceモードに似ていますが、replace backupモードでは、データとスキーマの両方が、元の名前に「_old」というサフィックスを付けたテーブルにバックアップされます。

### Deleteモード

以下のようなペインが表示されます:

![](/assets/image-20191020-190929.8dfee7d7a06221d5475320e64546c5ce980aca4bd8af6b53b82f797b6a3ee822.b6ab3c42.png)

BigQueryから取得したProject ID、Dataset Name、Table Nameを入力します。

Auto-create tableを選択し、置き換えるテーブルのスキーマを提供します。Schema JSONフィールドの値はクエリ結果（フィールド数とデータ型）と一致する必要があります。ドロップダウンから`Delete`を選択します。BigQueryにテーブルがすでに存在する場合、ジョブを実行するとテーブルが削除され、スキーマとしてJSONを持つ新しいテーブルが追加されます。BigQueryにテーブルが存在しない場合、入力した名前とスキーマを持つ新しいテーブルが作成されます。Treasure Dataのクエリ結果が自動的にこの新しく作成されたテーブルにインポートされます。

## データ変換について

BigQueryのデータ型は、以下の表に示すように、対応するTreasure Dataの型に自動的に変換されます。schema JSONにサポートされていない型を含めたり、クエリ結果がschema JSONのデータ型と一致しない場合、エラーが発生します。

| **Treasure Data** | **BigQuery** |
|  --- | --- |
| string | STRING |
| long | INTEGER |
| double | FLOAT |
| long (true is 1, false is 0) | BOOLEAN |
| string (yyyy-MM-dd HH:mm:ss.SSS) | TIMESTAMP |


![](/assets/image-20191020-191034.9b27e371236bc2aaf10355ab55f79ab61d1c40fc882226cc9f8d0446b1421e62.b6ab3c42.png)

## CLIからのスケジューリング

以下のコマンドを使用すると、BigQueryへの結果出力を含むスケジュールされたクエリを設定できます。
json_keyを指定し、改行をバックスラッシュでエスケープしてください。

例:


```bash
$ td sched:create scheduled_bigquery "10 6 14 12 *" \
-d dataconnector_db "SELECT id,account,purchase,comment,time FROM data_connectors" \
-r '{"type":"bigquery","project":"YOUR_PROJECT","dataset":"YOUR_DB","table":"YOUR_TABLE","auto_create_table":true,"max_bad_records":0,"ignore_unknown_values":true,"allow_quoted_newlines":true,"schema_file":"[{\"name\": \"id\", \"type\": \"INTEGER\"}, {\"name\": \"account\", \"type\": \"STRING\"},{\"name\": \"purchase\", \"type\": \"STRING\"}, {\"name\": \"comment\", \"type\": \"STRING\", \"mode\": \"REQUIRED\"}, {\"name\": \"time\", \"type\": \"TIMESTAMP\", \"mode\": \"REQUIRED\"}]", "json_keyfile":"{\"private_key_id\": \"ABDE\", \"private_key\": \"-----BEGIN PRIVATE KEY-----\\nABCDE\\nABCDE\\nABCDE\\n-----END PRIVATE KEY-----\\n\", \"client_email\": \"ABCDE.gserviceaccount.com\", \"client_id\": \"ABCDE.apps.googleusercontent.com\", \"type\": \"service_account\"}"}'
```

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