# Google BigQuery
Google BigQuery (opens new window) は、インメモリ BI Engine と組み込みの機械学習機能を備えた、拡張性および費用対効果に優れたサーバーレスなクラウドデータウェアハウスです。Workato の Google BigQuery コネクターを使用すれば、既存のデータセットへの行の挿入やクエリーの実行など、BigQuery インスタンスのデータセットに対するさまざまなアクションを自動化できます。データセット内の新しい行をレシピのトリガーにすることもできます。
# Workato での BigQuery への接続方法
BigQuery コネクターでは、OAuth 2.0とサービスアカウントの2種類の認証方法を利用できます。
項目 | 説明 |
---|---|
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 の入力として貼り付けます。
# 権限の設定
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
ロールを使用できます。
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 row
や Insert 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
条件にサブクエリーを含めることもできます。以下のクエリーは users
テーブルに対して使用できます。
id in (select distinct(user_id) from zendesk.tickets where priority = 2)
これを Delete rows アクションで使用すると、tickets
テーブル内の1つ以上の関連付けられた行で priority
列の値が2である、users
テーブル内のすべての行が削除されます。
サブクエリーを含む WHERE
条件でデータピルを使用する
# 出力項目の定義
BigQuery のアクションとトリガーによっては、クエリーで予期される出力列を定義することができます。この入力項目は、以下のトリガーとアクションにあります。
- Scheduled query トリガー
- Get query job output アクション
- Select rows using custom SQL アクション
出力スキーマデザイナーの CSV アップロード機能を使用すれば、出力項目を簡単に定義できます。上に示すように BigQuery コンソールでサンプルクエリーを実行して、CSV をエクスポートするだけです。
この CSV をスキーマウィザードにアップロードすると、すべての項目が自動的に生成されます。
Last updated: 2023/8/31 1:07:14