# Google BigQuery


Google BigQuery (opens new window) は、インメモリ BI Engine と組み込みの機械学習機能を備えた、拡張性および費用対効果に優れたサーバーレスなクラウドデータウェアハウスです。Workato の Google BigQuery コネクターを使用すれば、既存のデータセットへの行の挿入やクエリーの実行など、BigQuery インスタンスのデータセットに対するさまざまなアクションを自動化できます。データセット内の新しい行をレシピのトリガーにすることもできます。

# Workato での BigQuery への接続方法

BigQuery コネクターでは、OAuth 2.0とサービスアカウントの2種類の認証方法を利用できます。

BigQuery コネクションを設定する

項目 説明
Connection name この BigQuery コネクションに対して、接続先の BigQuery インスタンスを識別する一意の名前を付けます。
Authentication Type ユーザーアカウントを使用する場合は [Oauth 2.0] を選択し、サービスアカウントを使用して BigQuery に接続する場合は [Service Account] を選択します。
GCP Project service account email (サービスアカウント認証の場合のみ) サービスアカウントのメールアドレスです。
Private key (サービスアカウント認証の場合のみ) サービスアカウントの秘密鍵です。
Advanced settings (サービスアカウント認証の場合のみ) コネクションのスコープを調整します。

# サービスアカウント

BigQuery コネクターのサービスアカウントは、Google Cloud のサービスアカウントを使用した BigQuery への認証に使用されます。サービスアカウントとは、Google Cloud プロジェクトに関連付けられている特別な種類の Google アカウントのことであり、ユーザーに代わって API リクエストを実行する場合に使用できます。BigQuery でサービスアカウントを使用することで、個々のユーザーの権限が変更された場合でも、ソリューションが継続して実行されるようになります。サービスアカウントの詳細については、こちら (opens new window)を参照してください。

サービスアカウントを作成するには、Google Cloud Platform (GCP) コンソールにログインする必要があります。GCP プロジェクトの新しいサービスアカウントを作成するには、こちら (opens new window)のガイドに従ってください。新しい秘密鍵を追加して JSON 形式でダウンロードするには、こちら (opens new window)のガイドに従ってください。鍵ファイルをダウンロードした後は、再度ダウンロードできませんのでご注意ください。

秘密鍵の -----BEGIN PRIVATE KEY----- から -----END PRIVATE KEY-----\n までコピーし、Workato の入力として貼り付けます。

GCP プロジェクトのサービスアカウントのメールアドレスを取得する

# 権限の設定

BigQuery コネクターのすべてのアクションとトリガーを使用するサービスアカウントには、BigQuery Admin IAM ロール、または以下の11の権限を持つカスタムロールを付与する必要があります。

  • bigquery.datasets.get
  • bigquery.jobs.create
  • bigquery.jobs.get
  • bigquery.jobs.list
  • bigquery.jobs.listAll
  • bigquery.tables.create
  • bigquery.tables.get
  • bigquery.tables.getData
  • bigquery.tables.list
  • bigquery.tables.update
  • bigquery.tables.updateData`

TIP

Workato のこのコネクションでデータの挿入のみを行う場合は、BigQuery Data Editor ロールを使用できます。
Workato のこのコネクションでデータの選択のみを行う場合は、BigQuery Data Viewer ロールを使用できます。

11 の権限が割り当てられた BigQuery カスタムロール

Google Cloud Platform 上のサービスアカウントにカスタムロールを作成する方法については、こちら (opens new window)のガイドを参照してください。上記の権限それぞれの詳細については、BigQuery の権限のリスト (opens new window)を参照してください。

カスタムロールが付与されたサービスアカウントを使用する場合、プロジェクト ID は Workato で直接指定する必要があることに注意してください。これは、[Setup] の [Select project] ドロップダウンがロードされず、プロジェクト ID を手動で入力する必要が生じるためです。

# BigQuery のレート制限

テーブルに対する BigQuery のレート制限 (opens new window)により、テーブルへの bulk インサート操作は1日1,000回までしか実行できません。これを回避するには、この制限を受けない Insert rowInsert rows アクションを使用します。

# BigQuery コネクターの使用

BigQuery コネクターでコネクションを確立した後は、ほとんどのアクションで追加のパラメータ入力が必要になります。

項目 説明
Project クエリーの課金対象となる、コネクションで利用可能なプロジェクトです。
Dataset アクションまたはトリガーが使用可能なテーブルをプルする元となるデータセットです。
Table データセット内のテーブルです。
Location ジョブを実行する地理的な場所です。

# 単一行とバッチ行

BigQuery コネクターでは、単一行またはバッチ行でデータベースの読み取りや書き込みを実行できます。バッチ行を使用した読み取りアクション/トリガーでは、操作するバッチのサイズを入力する必要があります。バッチサイズには1 ~ 50,000の間の任意の数字を指定できます。最大バッチサイズは50,000です。

バッチトリガーの入力 バッチトリガーの入力

これら2つの操作には、入力項目の違いに加えて、出力にも違いがあります。一度に1つの行を処理するトリガーには、その単一行のデータをマッピングできる出力データツリーがあります。

単一行の出力 単一行の出力

それに対して、複数行をバッチ処理するトリガーは、それらを行の配列として出力します。Rows データピルは、出力がそのバッチ内の各行のデータを含むリストであることを示しています。

バッチトリガーの出力 バッチトリガーの出力

そのため、バッチトリガー/アクションの出力は異なる方法で処理する必要があります。[Rows source list] の入力項目を受け入れる下流のバッチアクションがある場合は、Rows 配列のピルをマッピングして、配列全体をマッピングするよう Workato に指示することができます。

バッチトリガーの出力を使用する バッチトリガーの出力を使用する

# WHERE 条件

この入力項目を使用すると、アクションを実行する対象行をフィルタリングして識別できます。以下のように、複数のトリガーおよびアクションで使用できます。

  • トリガーで取得する行をフィルタリングする
  • Select rows アクションで行をフィルタリングする
  • Delete rows アクションで削除する行をフィルタリングする

この句は各リクエストの WHERE ステートメントとして、基本的な SQL 構文に続いて使用されます。BigQuery と互換性のある SQL ステートメントを記述するためのルールの完全なリストについては、こちらの BigQuery のドキュメント (opens new window)を参照してください。

# 単純なステートメント

BigQuery の列のデータ型を把握しておくことは、適切に動作するクエリーを作成する上で重要です。文字列値を比較する際、値は一重引用符 ('') で囲む必要があります。また、使用する列はテーブルに存在していなければなりません。整数値を比較する際は、指定する値を一重引用符で囲まないでください。

単一列の値に基づいて行をフィルタリングする単純な WHERE 条件は、以下のようになります。

string_column = 'USD' and integer_column = 1111

Select rows アクションで使用すると、この WHERE 条件は currency 列の値が「USD」であるすべての行を返します。入力の際にデータピルを一重引用符で囲むことを覚えておいてください。

WHERE 条件でデータピルを使用する WHERE 条件でデータピルを使用する

# 複雑なステートメント

WHERE 条件にサブクエリーを含めることもできます。以下のクエリーは users テーブルに対して使用できます。

id in (select distinct(user_id) from zendesk.tickets where priority = 2)

これを Delete rows アクションで使用すると、tickets テーブル内の1つ以上の関連付けられた行で priority 列の値が2である、users テーブル内のすべての行が削除されます。

サブクエリーを含む WHERE 条件でデータピルを使用する サブクエリーを含む WHERE 条件でデータピルを使用する

# 出力項目の定義

BigQuery のアクションとトリガーによっては、クエリーで予期される出力列を定義することができます。この入力項目は、以下のトリガーとアクションにあります。

  • Scheduled query トリガー
  • Get query job output アクション
  • Select rows using custom SQL アクション

出力スキーマデザイナーの CSV アップロード機能を使用すれば、出力項目を簡単に定義できます。上に示すように BigQuery コンソールでサンプルクエリーを実行して、CSV をエクスポートするだけです。

BigQuery から CSV をエクスポートする

この CSV をスキーマウィザードにアップロードすると、すべての項目が自動的に生成されます。

CSV スキーマウィザード


Last updated: 2023/8/31 1:07:14