0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[BigQuery API(V2)] JavaでBigQueryでクエリを実行する

Posted at

BigQuery API V2(Java)を使用して、
BigQueryでクエリを実行する方法
についてご紹介します。

クエリの実行には適切なIAM権限が付与されている必要があります。

権限付与に関しては
⧉[BigQuery API(V2)] JavaでBigQueryを使う(2.権限付与)
を参照ください。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[BigQuery API(V2)] JavaでBigQueryを使う
を参照ください。

No 目次
1 クエリを実行
1 スコープ
2 実行
3 レスポンスの内容

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

メソッド 引数 説明
setName String パラメータ名
setParameterType QueryParameterType パラメータのタイプ
setParameterValue QueryParameterValue パラメータの値

QueryParameterType

メソッド 引数 説明
setType String トップレベルのタイプ
setArrayType QueryParameterType 配列の要素の型
setStructTypes List<QueryParameterType.StructTypes 構造体のフィールドの型
setRangeElementType QueryParameterType 範囲の要素タイプ

QueryParameterType.StructTypes

メソッド 引数 説明
setName String フィールドの名前
setType QueryParameterType フィールドのタイプ
setDescription String フィールドの説明

QueryParameterValue

メソッド 引数 説明
setValue String
setArrayValues List<QueryParameterValue> 配列値
setStructValues Map<String,QueryParameterValue> 構造体のフィールド値
setRangeValue RangeValue 範囲の​​値

RangeValue

メソッド 引数 説明
setStart QueryParameterValue 範囲の開始値
setEnd QueryParameterValue 範囲の終了値

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 更新された行の数


おしまい。。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?