BigQuery API V2(Java)を使用して、
BigQueryデータセットのルーティンの情報を取得する方法
についてご紹介します。
ルーティンとは
処理を事前に定義しておいて、後から呼び出せるようにしておくためのコンポーネントです。
BigQueryでは、以下のリソースをルーティンと定義付けています。
リソース | 概要 |
---|---|
リモート関数を含むユーザー定義関数(UDF) | SQL または JavaScript で記述するステートメント群 |
ストアドプロシージャ | SQLで記述するステートメント群 |
テーブル関数(TVF) | 戻り値にテーブルを返すユーザー定義関数 |
データセットのルーティン情報を取得するには、
データセットに対し適切なIAM権限が付与されている必要があります。
権限付与に関しては
⧉[BigQuery API(V2)] JavaでBigQueryを使う(2.権限付与)
を参照ください。
APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[BigQuery API(V2)] JavaでBigQueryを使う
を参照ください。
No | 目次 | |
---|---|---|
1 | ルーティン一覧を取得 | |
1 | スコープ | |
2 | 実行 | |
3 | レスポンスの内容 | |
2 | ルーティンを取得 | |
1 | スコープ | |
2 | 実行 | |
3 | レスポンスの内容 |
1. ルーティン一覧を取得
指定したデータセットのルーティン一覧を取得します。
1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
BigqueryScopes.BIGQUERY
BigqueryScopes.CLOUD_PLATFORM
BigqueryScopes.CLOUD_PLATFORM_READ_ONLY
https://www.googleapis.com/auth/bigquery.readonly
⧉[BigQuery API(V2)] JavaでBigQueryを使う(3.2. BigQueryインスタンスを取得)
でスコープを指定してください。
1.2. 実行
public static void main(String[] args) throws Exception{
Bigquery bigquery = getBigquery();
Bigquery.Routines routines = bigquery.routines();
Bigquery.Routines.List list = routines.list("プロジェクトID","データセットID");
ListRoutinesResponse res = list.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
GET: https://bigquery.googleapis.com/bigquery/v2/projects/{プロジェクトID}/datasets/{データセットID}/routines
が実行されます。
1.2.2. クエリパラメータ
Bigquery.Routines.Listのsetメソッドにより、クエリパラメータを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setMaxResults | Integer | 結果の最大数 |
setPageToken | String | 取得するページトークン |
setReadMask | String | 取得するフィールド名(カンマ区切り) 指定がない場合は、下記フィールドのみ取得 etag、projectId、datasetId、routineId、routineType、creationTime、lastModifiedTime、language、remoteFunctionOptions |
setFilter | String | フィルタに一致するルーティンのみ取得 指定する形式:"routineType:RoutineType(enum)" |
1.3. レスポンスの内容
ListRoutinesResponse
メソッド | 戻り値 | 説明 |
---|---|---|
getNextPageToken | String | 次のページトークン |
getRoutines | List<Routine> | データセット内のルーティンリスト |
Routine
メソッド | 戻り値 | 説明 |
---|---|---|
getEtag | String | ハッシュ値 |
getRoutineReference | RoutineReference | ルーティンのリファレンス |
getRoutineType | RoutineType(enum) | ルーティンの種類 |
getCreationTime | Long | ルーティンが作成された時刻(ミリ秒) |
getLastModifiedTime | Long | ルーティンが最後に変更された時刻(ミリ秒) |
getLanguage | Language(enum) | ルーティンの言語 |
getArguments | List<Argument> | 引数情報 |
getReturnType | StandardSqlDataType | ルーティンのデータ型情報 |
getReturnTableType | StandardSqlTableType | ルーティンタイプ情報 |
getImportedLibraries | List<String> | インポートされたJavaScriptライブラリのパス |
getDefinitionBody | String | ルーティンの本体 |
getDescription | String | ルーティンの説明 |
getDeterminismLevel | DeterminismLevel(enum) | JavaScriptUDFの決定レベル |
getStrictMode | Boolean | 多くの一般的なエラーを検出するか |
getRemoteFunctionOptions | RemoteFunctionOptions | リモート機能固有のオプション |
getSparkOptions | SparkOptions | Spark固有のオプション |
getDataGovernanceType | DataGovernanceType(enum) | データガバナンスタイプ |
RoutineReference
メソッド | 戻り値 | 説明 |
---|---|---|
getProjectId | String | プロジェクトID |
getDatasetId | String | データセットID |
getRoutineId | String | ルーティンID |
Argument
メソッド | 戻り値 | 説明 |
---|---|---|
getName | String | 引数の名前 |
getArgumentKind | ArgumentKind(enum) | 引数の種類 |
getMode | Mode(enum) | 引数の入出力モード |
getDataType | StandardSqlDataType | 引数のデータ型情報 |
StandardSqlTableType
メソッド | 戻り値 | 説明 |
---|---|---|
getColumns | List<StandardSqlField> | このテーブルの列の種類 |
RemoteFunctionOptions
メソッド | 戻り値 | 説明 |
---|---|---|
getEndpoint | String | ユーザー提供のリモートサービスのエンドポイント |
getConnection | String | リモートサービスにリクエストを送信するための認証情報を保持するユーザー指定の接続オブジェクトの完全修飾名 |
getUserDefinedContext | Map<String,String> | ユーザー定義コンテキスト |
getMaxBatchingRows | Long | リモートサービスに送信される各バッチの最大行数 |
SparkOptions
メソッド | 戻り値 | 説明 |
---|---|---|
getConnection | String | Spark接続オブジェクトの完全修飾名 |
getRuntimeVersion | String | ランタイムバージョン |
getContainerImage | String | ランタイム環境のカスタムコンテナーイメージ |
getProperties | Map<String,String> | 構成プロパティ |
getMainFileUri | String | SparkアプリケーションのメインファイルURI |
getPyFileUris | List<String> | PySparkアプリケーションのPYTHONPATHに配置されるPythonファイル |
getJarUris | List<String> | ドライバーおよびエグゼキューターのCLASSPATHに含めるJARファイル |
getFileUris | List<String> | 各エグゼキュータの作業ディレクトリに配置されるファイル |
getArchiveUris | List<String> | 各エグゼキュータの作業ディレクトリに抽出されるアーカイブファイル |
getMainClass | String | jarUris内のクラスの完全修飾名 |
StandardSqlField
メソッド | 戻り値 | 説明 |
---|---|---|
getName | String | 名前 |
getType | StandardSqlDataType | パラメータのタイプ |
StandardSqlDataType
メソッド | 戻り値 | 説明 |
---|---|---|
getTypeKind | TypeKind(enum) | トップレベルのタイプ |
getArrayElementType | StandardSqlDataType | 【getTypeKind()が"ARRAY"の場合】 配列の要素の型 |
getStructType | StandardSqlStructType | 【getTypeKind()が"STRUCT"の場合】 構造体のフィールド |
StandardSqlStructType
メソッド | 戻り値 | 説明 |
---|---|---|
getFields | List<StandardSqlField> | 構造体のフィールド |
TypeKind
定義値 | 内容 |
---|---|
TYPE_KIND_UNSPECIFIED | 無効なタイプ |
STRING | 文字列 |
BYTES | バイト(base64文字列としてエンコード) |
INT64 | 8byte整数(10進数の文字列としてエンコード) |
NUMERIC | 16byte整数(10進数の文字列としてエンコード) |
BIGNUMERIC | 32byte整数(10進数の文字列としてエンコード) |
BOOL | 真偽値 |
FLOAT64 | 浮動小数点数(数値または文字列「NaN」、「Infinity」、「-Infinity」としてエンコード |
TIMESTAMP | タイムスタンプ |
DATE | 日付 |
TIME | 時間 |
DATETIME | 日付時刻 |
GEOGRAPHY | 地理空間データ(WKTとしてエンコード) |
ARRAY | 配列型(Type.array_typeと一致するタイプのリストとしてエンコード) |
STRUCT | 構造体型(Type.struct_type[i]型のフィールドを持つリストとしてエンコード) |
JSON | JSON文字列(tabledata.listが使用) |
RoutineType
定義値 | 内容 |
---|---|
ROUTINE_TYPE_UNSPECIFIED | デフォルト値 |
SCALAR_FUNCTION | リモート関数を含むユーザー定義関数(UDF) |
PROCEDURE | ストアドプロシージャ |
TABLE_VALUED_FUNCTION | テーブル関数 |
Language
定義値 | 内容 |
---|---|
LANGUAGE_UNSPECIFIED | デフォルト値 |
SQL | SQL言語 |
JAVASCRIPT | JavaScript言語 |
PYTHON | Python言語 |
JAVA | Java言語 |
SCALA | スカラ言語 |
ArgumentKind
定義値 | 内容 |
---|---|
ARGUMENT_KIND_UNSPECIFIED | デフォルト値 |
FIXED_TYPE | 引数は完全に指定された型の変数 |
ANY_TYPE | 引数は構造体や配列を含む任意の型 |
Mode
定義値 | 内容 |
---|---|
MODE_UNSPECIFIED | デフォルト値 |
IN | 引数は入力専用 |
OUT | 引数は出力専用 |
INOUT | 引数は入力でもあり出力でもある |
DeterminismLevel
定義値 | 内容 |
---|---|
DETERMINISM_LEVEL_UNSPECIFIED | 未指定 |
DETERMINISTIC | UDFは決定的 |
NOT_DETERMINISTIC | UDFは決定論的ではない |
DataGovernanceType
定義値 | 内容 |
---|---|
DATA_GOVERNANCE_TYPE_UNSPECIFIED | 未指定 |
DATA_MASKING | データマスキング |
2. ルーティンを取得
指定したルーティンのメタデータを取得します。
2.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
BigqueryScopes.BIGQUERY
BigqueryScopes.CLOUD_PLATFORM
BigqueryScopes.CLOUD_PLATFORM_READ_ONLY
https://www.googleapis.com/auth/bigquery.readonly
⧉[BigQuery API(V2)] JavaでBigQueryを使う(3.2. BigQueryインスタンスを取得)
でスコープを指定してください。
2.2. 実行
ルーティンIDは、RoutineReferenceのgetRoutineId()で取得できる値を使用します。
public static void main(String[] args) throws Exception{
Bigquery bigquery = getBigquery();
Bigquery.Routines routines = bigquery.routines();
Bigquery.Routines.Get get = routines.get("プロジェクトID","データセットID","ルーティンID");
Routine res = get.execute();
System.out.println(res);
}
2.2.1. HTTPリクエスト
GET: https://bigquery.googleapis.com/bigquery/v2/projects/{プロジェクトID}/datasets/{データセットID}/routines/{ルーティンID}
が実行されます。
2.2.2. クエリパラメータ
Bigquery.Routines.Getのsetメソッドにより、クエリパラメータを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setReadMask | String | 取得するフィールド名(カンマ区切り) 指定がない場合は、全てのフィールドが取得される |
2.3. レスポンスの内容
Routine
1.3. レスポンスの内容(Routine)と同じです。
おしまい。。