Skip to content

Google Cloud Storage Export V2 Integration

ジョブの結果をGoogle Cloud Storageに直接書き込むことができます。

前提条件

  • TD Toolbeltを含む、Treasure Dataの基本的な知識。
  • 特定の権限を持つGoogle Cloud Platformアカウント

Treasure Data Integration の静的 IP アドレス

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

リージョンごとに整理された静的 IP アドレスの完全なリストは、次のリンクにあります: IP Addresses for Integrations

Google Cloud Storageで出力先バケットを取得する

Cloud Storageバケットの一覧を表示します。バケットは名前のアルファベット順に表示されます。

プロジェクト内のバケットを一覧表示するには:

  1. Google Cloud ConsoleでCloud Storageブラウザを開きます。
  2. 左メニューでCloud Storageを選択し、Bucketsを選択します。

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

必要に応じてGoogle Cloud Storageに出力先バケットを作成する

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

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

  1. バケット情報を入力し、各ステップでContinueを選択して完了します:

    • バケット名の要件に従ってNameを指定します。
    • バケットデータが永続的に保存されるLocation typeLocationを選択します。
    • バケットのDefault storage classを選択します。デフォルトストレージクラスは、バケットにアップロードされるすべてのオブジェクトにデフォルトで割り当てられます。
    • バケットのオブジェクトへのアクセスを制御する方法を決定するAccess controlモデルを選択します。Workload Identity Federationをサポートするには、Uniformを選択してください。

    • オプションで、Data protectionとData encryptionを設定できます。
  2. Createを選択します。

Google JSON認証情報を取得する

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

JSON認証情報の生成に使用するサービスアカウントには、Storage Object Userの権限が必要です。

  1. Google Developer Consoleにアクセスします。

  2. 左メニューのAPIs & ServicesからCredentialsを選択します。

  3. Create credentialsを選択し、Service accountを選択します:

  4. PermissionsからStorage Object User Roleを追加します。

Application Default Credentials (ADC) キーファイルを取得する

  1. IAM & Admin / Workload Identity Poolsで「create pool」を選択するか、既存のPoolを選択します。

  2. アカウントID 523683666290 でAWSプロバイダーを追加します。

  3. Configure provider attributesからAdd mappingをクリックします。属性名をattribute.account、値をassertion.accountとして追加し、Saveをクリックします。

  4. Workload Identity Poolsから作成したPoolを選択し、Connected service accountsからDownload configを選択します。

  5. アカウントID 523683666290 用に作成したAWSプロバイダーを選択し、Downloadをクリックして設定ファイル(Application default credential キーファイル)を保存します。

AWSプロバイダーに出力先バケットへのアクセス権限を付与する

  1. バケットリストから出力先バケットを選択し、permissionsタブをクリックします。

  2. Grant accessをクリックし、Principals値としてprincipalSet://iam.googleapis.com/projects/{PROJECT_NUMBER}/locations/global/workloadIdentityPools/{POOL_ID}/attribute.account/523683666290を追加し、ロールとしてStorage Object Userを付与します。

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

新しい認証を作成する

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

  1. Treasure コンソールを開きます。

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

  3. Google Cloud Storage V2を検索して選択します。

  4. Create Authenticationを選択します。

  5. Authentication Methodを選択し、認証情報を入力します。

  6. 接続の名前を入力します。

  7. Continueを選択します。

クエリを定義する

  1. Creating a Destination Integrationの手順を完了します。

  2. Data Workbench > Queriesに移動します。

  3. データをエクスポートするクエリを選択します。

  4. クエリを実行して結果セットを検証します。

  5. Export Resultsを選択します。

  6. 既存の連携認証を選択します。

  7. 追加のExport Resultsの詳細を定義します。エクスポート連携の内容で、連携パラメータを確認します。たとえば、Export Results画面が異なる場合や、追加の詳細を入力する必要がない場合があります。

  8. Doneを選択します。

  9. クエリを実行します。

  10. 指定した出力先にデータが移動したことを確認します。

Google Cloud Storageの連携パラメータ

パラメータ必須説明
BucketはいGoogle Cloud Storageのバケット名
File Pathはいファイル名を含むオブジェクトパス。例:path/to/filename.csv
Content typeいいえ出力ファイルのMIMEタイプ。デフォルト値:application/octet-stream
Formatいいえ出力ファイルのフォーマット。デフォルト値:csv
Encodersいいえエクスポートされたファイルに適用される圧縮。デフォルト値:none
Public Keyはい(EncodersがPGP Encryptionの場合)暗号化に使用する公開鍵。
Key Identifierいいえ(EncodersがPGP Encryptionの場合のみ適用)暗号化に使用する公開鍵のKey IDまたはFingerprint(16進数文字列)
Armorいいえ(EncodersがPGP Encryptionの場合のみ適用)ASCIIアーマーを使用するかどうか(暗号化に使用する公開鍵の16進数文字列)
Compression Typeいいえ(EncodersがPGP Encryptionの場合のみ適用)ファイルの圧縮に使用する圧縮アルゴリズムを指定します。デフォルト値:none
Header line?いいえ最初の行にカラム名を含むヘッダー行を書き込みます。デフォルト値:true
Delimiterいいえカラムの区切り文字。デフォルト値:Default
Null stringいいえNULL値の代替文字列。デフォルト値:Default
End-of-line characterいいえ行終端文字。デフォルト値:CRLF

クエリの例

SELECT 
  col_1
FROM 
  tbl 
WHERE col_1 != 'email'

エクスポート結果の検証

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

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 出力をカスタマイズします。

  • 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 を設定します。

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

batch journey の activation を作成する必要がある場合は、Creating a Batch Journey Activation を参照してください。

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

以下のコマンドを使用して、クエリ結果をGoogle Cloud Storageに送信するスケジュールクエリを設定できます。

認証モードJSONKeyの場合

  • 以下のサンプル構文でJSON keyを指定します。
  • バックスラッシュを使用して、コード構文を壊さずに改行できます。
'{"type":"gcs_v2","bucket":"samplebucket","file_path":"output/test.csv","format":"csv","compression":"none","header_line":false,"delimiter":",","null_string":"","newline":"CRLF","auth_method":"json_key","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\"}"}'

認証モードWorkload Identity Federationの場合

  • 以下のサンプル構文でADC keyを指定します。
  • バックスラッシュを使用して、コード構文を壊さずに改行できます。
'{"type":"gcs_v2","bucket":"samplebucket","file_path":"output/test.csv","format":"csv","compression":"none","header_line":false,"delimiter":",","null_string":"","newline":"CRLF","auth_method":"wif","adc_keyfile":"{\"universe_domain\": \"googleapis.com\"......}"}'

例:

$ td sched:create scheduled_gcs_v2 "10 6 * * *" \
-d dataconnector_db "SELECT id,account,purchase,comment,time FROM data_connectors" \
-r '{"type":"gcs_v2","bucket":"samplebucket","file_path":"output/test.csv","format":"csv","compression":"none","header_line":false,"delimiter":",","null_string":"","newline":"CRLF","auth_method":"json_key","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\"}"}'

パラメータ

パラメータデータ型必須デフォルト値説明
bucketstringはいN/AGoogle Cloud Storageのバケット名
file_pathstringはいN/Aファイル名を含むオブジェクトパス。例:path/to/filename.csv
content_typestringいいえapplication/octet-stream出力ファイルのMIMEタイプ。
formatstringいいえcsv出力ファイルのフォーマット。サポートされる値:csv/tsv
compressionstringいいえnoneエクスポートされたファイルに適用される圧縮。サポートされる値:'none', 'gz', 'bzip2', 'encrypt_pgp'
public_keystringはい(compressionがencrypt_pgpの場合)N/A暗号化に使用する公開鍵。
key_identifierstringいいえ(compressionがencrypt_pgpの場合のみ適用)N/A暗号化に使用する公開鍵のKey IDまたはFingerprint(16進数文字列)
armorstringいいえ(compressionがencrypt_pgpの場合のみ適用)N/AASCIIアーマーを使用するかどうか(暗号化に使用する公開鍵の16進数文字列)
compression_typestringいいえ(compressionがencrypt_pgpの場合のみ適用)N/Aファイルの圧縮に使用する圧縮アルゴリズムを指定します。サポートされる値:'none', 'gzip', 'bzip2', 'bzip2_built_in', 'zip_built_in', 'zlib_built_in'
header_linebooleanいいえtrue最初の行にカラム名を含むヘッダー行を書き込みます。サポートされる値:true/false
delimiterstringいいえdefaultカラムの区切り文字。サポートされる値:'default', ',', '\t', '|'
null_stringstringいいえdefaultNULL値の代替文字列(string、オプション)。サポートされる値:'default', '', '\N', 'NULL', 'null'
newlinestringいいえCRLF行終端文字(string、オプション)。サポートされる値:'CRLF', 'LF', 'CR'

その他の設定

  • Result Exportは、定期的にターゲットの出力先にデータをアップロードするようにスケジュールできます。
  • すべてのインポートおよびエクスポート連携はTreasure ワークフローに追加できます。td workflowオペレーターを使用して、クエリ結果を指定したコネクタにエクスポートできます。詳細については、Workflow Operatorsを参照してください。

参考資料

Embulk-encoder-Encryptionドキュメント

GCS V2 Data ConnectorのFAQ

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

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

  2. ビルトイン暗号化を使用して復号する場合、ファイルは生データに戻ります。