LoginSignup
0
0

[BigQuery API(V2)] Javaでデータセットのルーティン情報を取得する

Posted at

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)と同じです。



おしまい。。
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