BigQuery API V2(Java)を使用して、
BigQueryでクエリを実行する方法
についてご紹介します。
クエリの実行には適切なIAM権限が付与されている必要があります。
権限付与に関しては
⧉[BigQuery API(V2)] JavaでBigQueryを使う(2.権限付与)
を参照ください。
1. クエリを実行
BigQuery上でクエリを実行します。
1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
BigqueryScopes.BIGQUERY
BigqueryScopes.CLOUD_PLATFORM
BigqueryScopes.DEVSTORAGE_READ_ONLY
https://www.googleapis.com/auth/cloud-platform.read-only
⧉[BigQuery API(V2)] JavaでBigQueryを使う(3.2. BigQueryインスタンスを取得)
でスコープを指定してください。
1.2. 実行
public static void main(String[] args) throws Exception{
Bigquery bigquery = getBigquery();
Bigquery.Jobs jobs = bigquery.jobs();
QueryRequest request = new QueryRequest();
request.setQuery("SELECT * FROM `プロジェクトID.データセットID.テーブルID` LIMIT 10");
request.setUseLegacySql(false);
Bigquery.Jobs.Query query = jobs.query("プロジェクトID",request);
QueryResponse res = query.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
POST: https://bigquery.googleapis.com/bigquery/v2/projects/{プロジェクトID}/queries
が実行されます。
1.2.2. クエリパラメータ
クエリパラメータはありまえん。
1.2.3. リクエストボディ
QueryRequestのsetメソッドにより、リクエストボディを追加できます。
メソッド |
引数 |
説明 |
setQuery |
String |
【必須】実行するクエリ文字列 |
setMaxResults |
Integer |
取得するデータの最大行数 |
setDefaultDataset |
DatasetReference |
クエリ内の非修飾テーブル名として想定されるデフォルトの情報 |
setTimeoutMs |
Integer |
クライアントがクエリの完了を待機する最大時間(ミリ秒) |
setDryRun |
Boolean |
ジョブを実行しないか |
setUseQueryCache |
Boolean |
クエリキャッシュで結果を検索するか |
setUseLegacySql |
Boolean |
BigQueryのレガシーSQL言語を使用するか |
setParameterMode |
String |
パラメータモード(GoogleSQLのみ) |
setQueryParameters |
List<QueryParameter> |
jobs.queryパラメータ(GoogleSQLのみ) |
setLocation |
String |
ジョブを実行するロケーション |
setFormatOptions |
DataFormatOptions |
出力フォーマットの調整 |
setConnectionProperties |
List<ConnectionProperty
|
クエリの動作を変更できる接続プロパティ |
setLabels |
Map<String,String> |
クエリに関連付けられたラベル |
setMaximumBytesBilled |
Long |
クエリに対して請求されるバイト数の制限 |
setRequestId |
String |
ユーザーが指定した一意の識別子 |
setCreateSession |
Boolean |
ランダムに生成されたsessionIdを使用して新しいセッションを作成するか |
DatasetReference
メソッド |
引数 |
説明 |
setDatasetId |
String |
データセットID |
setProjectId |
String |
プロジェクトID |
QueryParameter
QueryParameterType
QueryParameterType.StructTypes
メソッド |
引数 |
説明 |
setName |
String |
フィールドの名前 |
setType |
QueryParameterType |
フィールドのタイプ |
setDescription |
String |
フィールドの説明 |
QueryParameterValue
RangeValue
DataFormatOptions
メソッド |
引数 |
説明 |
setUseInt64Timestamp |
Boolean |
タイムスタンプをusec int64として出力するか |
ConnectionProperty
メソッド |
引数 |
説明 |
setKey |
String |
プロパティのキー |
setValue |
String |
プロパティの値 |
1.3. レスポンスの内容
QueryResponse
メソッド |
戻り値 |
説明 |
getKind |
String |
リソースの種類 固定文字列:"bigquery#queryResponse" |
getPageToken |
String |
次ページのトークン |
getSchema |
⧉TableSchema |
結果のスキーマ |
getJobReference |
JobReference |
クエリを実行するために作成されたジョブへの参照 |
getTotalRows |
BigInteger |
クエリ結果セットの合計行数 |
getRows |
List<TableRow> |
クエリの実行結果 |
getTotalBytesProcessed |
Long |
処理された合計バイト数 |
getJobComplete |
Boolean |
クエリが完了したか |
getErrors |
List<ErrorProto> |
ジョブの実行中に発生した最初のエラー |
getCacheHit |
Boolean |
クエリ結果がクエリ キャッシュからフェッチされたか |
getNumDmlAffectedRows |
Long |
DMLステートメントの影響を受ける行の数 |
getSessionInfo |
SessionInfo |
セッションの情報 |
getDmlStats |
DmlStats |
DMLステートメントの詳細な統計 |
JobReference
メソッド |
戻り値 |
説明 |
getProjectId |
String |
プロジェクトID |
getJobId |
String |
ジョブID |
getLocation |
String |
ロケーション |
TableRow
メソッド |
戻り値 |
説明 |
get("フィールド名") |
Object |
引数で指定したフィールド名の値 |
ErrorProto
メソッド |
戻り値 |
説明 |
getReason |
String |
エラーコード |
getLocation |
String |
エラーが発生した場所 |
getDebugInfo |
String |
デバッグ情報 |
getMessage |
String |
エラーの説明 |
SessionInfo
メソッド |
戻り値 |
説明 |
getSessionId |
String |
セッションID |
DmlStats
メソッド |
戻り値 |
説明 |
getInsertedRowCount |
Long |
挿入された行の数 |
getDeletedRowCount |
Long |
削除された行の数 |
getUpdatedRowCount |
Long |
更新された行の数 |
おしまい。。