BigQuery
BigQuery コネクタを使用すると、Google BigQuery データに対して挿入、削除、更新、読み取りオペレーションを実行できます。
準備
BigQuery コネクタを使用する前に、次の作業を行います。
- Google Cloud プロジェクトで次の操作を行います。
- コネクタを構成するユーザーに roles/connectors.admin IAM ロールを付与します。
- コネクタに使用するサービス アカウントに、次の IAM ロールを付与します。
roles/bigquery.dataEditor
サービス アカウントは特別なタイプの Google アカウントで、Google API のデータにアクセスするのに認証を受ける必要がある人間以外のユーザーを表します。サービス アカウントがない場合は、サービス アカウントを作成する必要があります。詳細については、サービス アカウントを作成するをご覧ください。
- 次のサービスを有効にします。
secretmanager.googleapis.com
(Secret Manager API)connectors.googleapis.com
(Connectors API)
サービスを有効にする方法については、サービスを有効にするをご覧ください。
以前にプロジェクトでこうしたサービスを有効にしていない場合は、コネクタを構成するときにそれを有効にすることを求められます。
コネクタを構成する
コネクタを構成するには、データソース(バックエンド システム)への接続を作成する必要があります。接続はデータソースに特有です。つまり、多数のデータソースがある場合は、データソースごとに別々の接続を作成する必要があります。接続を作成する手順は次のとおりです。
- Cloud コンソールで、[Integration Connectors] > [接続] ページに移動し、Google Cloud プロジェクトを選択または作成します。
- [+ 新規作成] をクリックして [接続の作成] ページを開きます。
- [ロケーション] セクションで、接続のロケーションを選択します。
- リージョン: プルダウン リストからロケーションを選択します
サポートされているすべてのリージョンの一覧については、ロケーションをご覧ください。
- [NEXT] をクリックします。
- リージョン: プルダウン リストからロケーションを選択します
- [接続の詳細] セクションで、次の操作を行います。
- コネクタ: 使用可能なコネクタのプルダウン リストから [BigQuery] を選択します。
- コネクタのバージョン: 使用可能なバージョンのプルダウン リストからコネクタのバージョンを選択します。
- [接続名] フィールドに、接続インスタンスの名前を入力します。
接続名は次の条件を満たす必要があります。
- 接続名には英字、数字、ハイフンを使用できます。
- 文字は小文字のみを使用できます。
- 接続名の先頭には英字を設定し、末尾には英字または数字を設定する必要があります。
- 接続名は 63 文字以内で指定してください。
- 必要に応じて、接続インスタンスの [説明] を入力します。
- サービス アカウント: 必要なロールを持つサービス アカウントを選択します。
- 必要に応じて、接続ノードの設定を構成します。
- ノードの最小数: 接続ノードの最小数を入力します。
- ノードの最大数: 接続ノードの最大数を入力します。
ノードは、トランザクションを処理する接続の単位(またはレプリカ)です。1 つの接続でより多くのトランザクションを処理するには、より多くのノードが必要になります。逆に、より少ないトランザクションを処理するには、より少ないノードが必要になります。ノードがコネクタの料金に与える影響については、接続ノードの料金をご覧ください。値を入力しない場合は、デフォルトで最小ノード数は 2 に設定され(可用性を高めるため)、最大ノード数は 50 に設定されます。
- プロジェクト ID: データが存在する Google Cloud プロジェクトの ID。
- データセット ID: BigQuery データセットの ID を入力します。
- プロキシを使用: このチェックボックスを選択して、接続用のプロキシ サーバーを構成し、次の値を構成します。
-
Proxy Auth Scheme: プロキシ サーバーで認証する認証タイプを選択します。次の認証タイプがサポートされています。
- 基本: 基本的な HTTP 認証。
- ダイジェスト: ダイジェスト HTTP 認証。
- Proxy User: プロキシ サーバーでの認証に使用されるユーザー名。
- プロキシ パスワード: ユーザーのパスワードの Secret Manager シークレット。
-
Proxy SSL Type: プロキシ サーバーへの接続時に使用する SSL タイプ。次の認証タイプがサポートされています。
- 自動: デフォルトの設定。URL が HTTPS URL の場合は、[トンネル] オプションが使用されます。URL が HTTP URL の場合、[なし] オプションが使用されます。
- 常に: 接続は常に SSL 対応です。
- なし: 接続は SSL に対応していません。
- トンネル: 接続はトンネリング プロキシ経由で行われます。プロキシ サーバーがリモートホストへの接続を開き、トラフィックはプロキシを経由するようになります。
- [Proxy Server] セクションで、プロキシ サーバーの詳細を入力します。
- [+ 宛先を追加] をクリックします。
- [宛先の種類] を選択します。
- Host address: 宛先のホスト名または IP アドレスを指定します。
バックエンドへのプライベート接続を確立する場合は、次のようにします。
- PSC サービス アタッチメントを作成します。
- エンドポイント アタッチメントを作成し、続いて [Host address] フィールドにあるエンドポイント アタッチメントの詳細を入力します。
- Host address: 宛先のホスト名または IP アドレスを指定します。
- 必要に応じて、[+ ラベルを追加] をクリックして Key-Value ペアの形式でラベルを接続に追加します。
- [NEXT] をクリックします。
-
[認証] セクションで、認証の詳細を入力します。
- BigQuery 接続に認証は必要ありません。
- [NEXT] をクリックします。
- Review: 接続と認証の詳細を確認します。
- [Create(作成)] をクリックします。
エンティティ、オペレーション、アクション
すべての Integration Connectors が、接続されたアプリケーションのオブジェクトを抽象化するレイヤを提供します。アプリケーションのオブジェクトには、この抽象化を通じてのみアクセスできます。抽象化は、エンティティ、オペレーション、アクションとして公開されます。
- エンティティ: エンティティは、接続されているアプリケーションやサービスのオブジェクト、またはプロパティのコレクションと考えることができます。エンティティの定義は、コネクタによって異なります。たとえば、データベース コネクタでは、テーブルがエンティティであり、ファイル サーバー コネクタでは、フォルダがエンティティです。また、メッセージング システム コネクタでは、キューがエンティティです。
ただし、コネクタでいずれのエンティティもサポートされていない、またはエンティティが存在しない可能性があります。その場合、
Entities
リストは空になります。 - オペレーション: エンティティに対して行うことができるアクティビティです。エンティティに対して次のいずれかのオペレーションを行うことができます。
使用可能なリストからエンティティを選択すると、そのエンティティで使用可能なオペレーションのリストが生成されます。オペレーションの詳細については、コネクタタスクのエンティティ オペレーションをご覧ください。ただし、コネクタがどのエンティティ オペレーションもサポートしていない場合、サポートされていないオペレーションは
Operations
リストに含まれません。 - アクション: コネクタ インターフェースを介して統合で使用できる最初のクラス関数です。アクションを使用すると、1 つまたは複数のエンティティに対して変更を加えることができます。また、使用できるアクションはコネクタごとに異なります。通常、アクションには、いくつかの入力パラメータと出力パラメータがあります。ただし、コネクタがどのアクションもサポートしていない可能性があります。その場合は、
Actions
リストが空になります。
システムの上限
BigQuery コネクタは、ノードごとに 1 秒あたり最大 8 件のトランザクションを処理することができ、この上限を超えるトランザクションはすべてスロットルされます。 デフォルトでは、Integration Connectors は、接続に 2 つのノードを割り当てます(可用性を高めるため)。
Integration Connectors に適用される上限の詳細については、上限をご覧ください。
サポートされるデータタイプ
このコネクタでサポートされているデータ型は次のとおりです。
- BIGINT
- BINARY
- BIT
- BOOLEAN
- CHAR
- DATE
- DECIMAL
- DOUBLE
- FLOAT
- INTEGER
- LONGN VARCHAR
- LONG VARCHAR
- NCHAR
- NUMERIC
- NVARCHAR
- REAL
- SMALL INT
- 時間
- TIMESTAMP
- TINY INT
- VARBINARY
- VARCHAR
既知の問題
BigQuery コネクタは、BigQuery テーブルの主キーをサポートしていません。つまり、entityId
を使用してエンティティ オペレーションを取得、更新、削除することはできません。または、フィルタ句を使用して、ID に基づいてレコードをフィルタリングすることもできます。
アクション
このセクションでは、BigQuery コネクタで利用可能なアクションについて説明します。
CancelJob アクション
このアクションを使用すると、実行中の BigQuery ジョブをキャンセルできます。
次の表では、CancelJob
アクションの入力パラメータを示します。
パラメータ名 | データ型 | 説明 |
---|---|---|
JobId | 文字列 | キャンセルするジョブの ID。このフィールドは必須です。 |
リージョン | 文字列 | ジョブが現在実行されているリージョン。ジョブが米国または EU リージョンの場合、必須ではありません。 |
GetJob アクション
このアクションを使用すると、既存のジョブの構成情報と実行状態を取得できます。
次の表では、GetJob
アクションの入力パラメータを示します。
パラメータ名 | データ型 | 説明 |
---|---|---|
JobId | 文字列 | 構成を取得するジョブの ID。このフィールドは必須です。 |
リージョン | 文字列 | ジョブが現在実行されているリージョン。ジョブが米国または EU リージョンの場合、必須ではありません。 |
InsertJob アクション
このアクションを使用すると、BigQuery ジョブを挿入できます。その後、ジョブを選択してクエリ結果を取得できます。
次の表では、InsertJob
アクションの入力パラメータを示します。
パラメータ名 | データ型 | 説明 |
---|---|---|
クエリ | 文字列 | BigQuery に送信するクエリ。このフィールドは必須です。 |
IsDML | 文字列 | クエリが DML ステートメントの場合は true 、それ以外の場合は false に設定する必要があります。デフォルト値は false です。 |
DestinationTable | 文字列 | クエリの宛先テーブル(DestProjectId:DestDatasetId.DestTable 形式)。 |
WriteDisposition | 文字列 | 宛先テーブルにデータを書き込む方法を指定します。既存の結果を切り捨てる、既存の結果を追加する、テーブルが空の場合にのみ書き込みを行うなどです。サポートされている値は次のとおりです。
|
DryRun | 文字列 | ジョブの実行がドライランであるかどうかを指定します。 |
MaximumBytesBilled | 文字列 | ジョブで処理できる最大バイト数を指定します。ジョブが指定された値を超えるバイト数を処理しようとすると、BigQuery はジョブをキャンセルします。 |
リージョン | 文字列 | ジョブを実行するリージョンを指定します。 |
InsertLoadJob アクション
このアクションを使用すると、Google Cloud Storage から既存のテーブルにデータを追加する BigQuery 読み込みジョブを挿入できます。
次の表では、InsertLoadJob
アクションの入力パラメータを示します。
パラメータ名 | データ型 | 説明 |
---|---|---|
SourceURIs | 文字列 | Google Cloud Storage URI のスペース区切りのリスト。 |
SourceFormat | 文字列 | ファイルのソース形式。サポートされている値は次のとおりです。
|
DestinationTable | 文字列 | クエリの宛先テーブル(DestProjectId.DestDatasetId.DestTable 形式)。 |
DestinationTableProperties | 文字列 | テーブルのわかりやすい名前、説明、ラベルのリストを指定する JSON オブジェクト。 |
DestinationTableSchema | 文字列 | テーブルの作成に使用されるフィールドを指定する JSON リスト。 |
DestinationEncryptionConfiguration | 文字列 | テーブルの KMS 暗号化設定を指定する JSON オブジェクト。 |
SchemaUpdateOptions | 文字列 | 宛先テーブルのスキーマの更新時に適用するオプションを指定する JSON リスト。 |
TimePartitioning | 文字列 | 時間パーティショニングのタイプとフィールドを指定する JSON オブジェクト。 |
RangePartitioning | 文字列 | 範囲パーティショニングのフィールドとバケットを指定する JSON オブジェクト。 |
クラスタリング | 文字列 | クラスタリングに使用するフィールドを指定する JSON オブジェクト。 |
自動検出 | 文字列 | JSON ファイルおよび CSV ファイルのオプションとスキーマを自動的に決定するかどうかを指定します。 |
CreateDisposition | 文字列 | 宛先テーブルが存在しない場合に宛先テーブルを作成する必要があるかどうかを指定します。サポートされている値は次のとおりです。
|
WriteDisposition | 文字列 | 宛先テーブルにデータを書き込む方法を指定します。既存の結果を切り捨てる、既存の結果を追加する、テーブルが空の場合にのみ書き込みを行うなどです。サポートされている値は次のとおりです。
|
リージョン | 文字列 | ジョブを実行するリージョンを指定します。Google Cloud Storage リソースと BigQuery データセットは同じリージョンに存在する必要があります。 |
DryRun | 文字列 | ジョブの実行がドライランであるかどうかを指定します。デフォルト値は false です。 |
MaximumBadRecords | 文字列 | ジョブ全体がキャンセルされる前に無効であることが許容されるレコードの数を指定します。デフォルトでは、すべてのレコードが有効である必要があります。デフォルト値は 0 です。 |
IgnoreUnknownValues | 文字列 | 入力ファイルで不明なフィールドを無視するか、エラーとして扱うかを指定します。デフォルトでは、エラーとして扱われます。デフォルト値は false です。 |
AvroUseLogicalTypes | 文字列 | AVRO のデータ型を BigQuery 型に変換するために AVRO 論理型を使用する必要があるかどうかを指定します。デフォルト値は true です。 |
CSVSkipLeadingRows | 文字列 | CSV ファイルの先頭でスキップする行数を指定します。これは通常、ヘッダー行をスキップするために使用します。 |
CSVEncoding | 文字列 | CSV ファイルのエンコードタイプ。サポートされている値は次のとおりです。
|
CSVNullMarker | 文字列 | 指定されている場合、この文字列は CSV ファイル内の NULL 値に使用されます。デフォルトでは、CSV ファイルに NULL を使用できません。 |
CSVFieldDelimiter | 文字列 | CSV ファイル内の列を区切るために使用する文字。デフォルト値はカンマ(, )です。 |
CSVQuote | 文字列 | CSV ファイルの引用符で囲まれたフィールドに使用する文字。引用を無効にするには、空に設定します。デフォルト値は二重引用符(" )です。 |
CSVAllowQuotedNewlines | 文字列 | CSV ファイルの引用符で囲まれたフィールド内に改行を含めることができるかどうかを指定します。デフォルト値は false です。 |
CSVAllowJaggedRows | 文字列 | CSV ファイルに欠落しているフィールドを含めることができるかどうかを指定します。デフォルト値は false です。 |
DSBackupProjectionFields | 文字列 | Cloud データストアのバックアップから読み込むフィールドの JSON リスト。 |
ParquetOptions | 文字列 | Parquet 固有のインポート オプションを指定する JSON オブジェクト。 |
DecimalTargetTypes | 文字列 | 数値型に適用される優先順位を指定する JSON リスト。 |
HivePartitioningOptions | 文字列 | ソース側のパーティショニング オプションを指定する JSON オブジェクト。 |
カスタム SQL クエリを実行する
カスタムクエリを作成する手順は次のとおりです。
- 詳細な手順に沿って、コネクタタスクを追加します。
- コネクタタスクを構成するときに、実行するアクションの種類で [Actions] を選択します。
- [Actions] リストで [Execute custom query] を選択し、[Done] をクリックします。
- [Task input] セクションを開き、次の操作を行います。
- [Timeout after] フィールドに、クエリが実行されるまで待機する秒数を入力します。
デフォルト値:
180
秒 - [Maximum number of rows] フィールドに、データベースから返される最大行数を入力します。
デフォルト値:
25
。 - カスタムクエリを更新するには、[Edit Custom Script] をクリックします。[Script editor] ダイアログが開きます。
- [Script editor] ダイアログで、SQL クエリを入力して [Save] をクリックします。
SQL ステートメントで疑問符(?)を使用して、クエリ パラメータ リストで指定する必要がある 1 つのパラメータを表すことができます。たとえば、次の SQL クエリは、
LastName
列に指定された値と一致するEmployees
テーブルからすべての行を選択します。SELECT * FROM Employees where LastName=?
- SQL クエリで疑問符を使用した場合は、各疑問符の [+ Add Parameter Name] をクリックして、パラメータを追加する必要があります。統合の実行中に、これらのパラメータにより SQL クエリ内の疑問符(?)が順番に置き換わります。たとえば、3 つの疑問符(?)を追加した場合、3 つのパラメータを順番に追加する必要があります。
クエリ パラメータを追加する手順は次のとおりです。
- [Type] リストから、パラメータのデータ型を選択します。
- [Value] フィールドに、パラメータの値を入力します。
- 複数のパラメータを追加するには、[+ クエリ パラメータを追加] をクリックします。
- [Timeout after] フィールドに、クエリが実行されるまで待機する秒数を入力します。
Terraform を使用して接続を作成する
Terraform リソースを使用して、新しい接続を作成できます。Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
接続作成用の Terraform テンプレートのサンプルを表示するには、サンプル テンプレートをご覧ください。
Terraform を使用してこの接続を作成する場合は、Terraform 構成ファイルで次の変数を設定する必要があります。
パラメータ名 | データ型 | 必須 | 説明 |
---|---|---|---|
project_id | STRING | True | BigQuery データセットを含むプロジェクトの ID(例: myproject)。 |
dataset_id | STRING | False | プロジェクト名のない BigQuery データセットのデータセット ID(例: mydataset)。 |
proxy_enabled | BOOLEAN | False | 接続用のプロキシ サーバーを構成するには、このチェックボックスをオンにします。 |
proxy_auth_scheme | ENUM | False | ProxyServer プロキシへの認証に使用する認証タイプです。サポートされている値は、BASIC、DIGEST、NONE です。 |
proxy_user | 文字列 | False | ProxyServer プロキシへの認証に使用されるユーザー名です。 |
proxy_password | SECRET | False | ProxyServer プロキシの認証に使用されるパスワード。 |
proxy_ssltype | ENUM | False | ProxyServer プロキシへの接続時に使用する SSL のタイプです。サポートされている値は AUTO、ALWAYS、NEVER、TUNNEL です。 |
統合で BigQuery 接続を使用する
接続を作成すると、Apigee Integration と Application Integration の両方で使用できるようになります。この接続は、コネクタタスクを介して統合で使用できます。
- Apigee Integration で Connectors タスクを作成して使用する方法については、Connectors タスクをご覧ください。
- Application Integration で Connectors タスクを作成して使用する方法については、Connectors タスクをご覧ください。
Google Cloud コミュニティの助けを借りる
Google Cloud コミュニティの Cloud フォーラムで質問を投稿したり、このコネクタについてディスカッションしたりできます。次のステップ
- 接続を一時停止して再開する方法を確認する。
- コネクタの使用状況をモニタリングする方法を確認する。
- コネクタログを表示する方法を確認する。