BigQuery API V2(Java)を使用して、
BigQueryテーブルの情報を取得する方法
についてご紹介します。
テーブルの情報を取得するには、
適切なIAM権限が付与されている必要があります。
権限付与に関しては
⧉[BigQuery API(V2)] JavaでBigQueryを使う(2.権限付与)
を参照ください。
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.Tables tables = bigquery.tables();
Bigquery.Tables.List list = tables.list("プロジェクトID","データセットID");
TableList res = list.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
GET: https://bigquery.googleapis.com/bigquery/v2/projects/{プロジェクトID}/datasets/{データセットID}/tables
が実行されます。
1.2.2. クエリパラメータ
Bigquery.Tables.Listのsetメソッドにより、クエリパラメータを追加できます。
メソッド |
引数 |
説明 |
setMaxResults |
Integer |
結果の最大数 |
setPageToken |
String |
取得するページトークン |
1.3. レスポンスの内容
TableList
メソッド |
戻り値 |
説明 |
getKind |
String |
リソースの種類 固定文字列:"bigquery#tableList" |
getEtag |
String |
ハッシュ値 |
getNextPageToken |
String |
次のページトークン |
getTotalItems |
Integer |
データセット内のテーブルの総数 |
getTables |
List<TableList.Tables> |
テーブル情報 |
TableList.Tables
メソッド |
戻り値 |
説明 |
getId |
String |
テーブルID |
getKind |
String |
リソースの種類 固定文字列:"bigquery#table" |
getTableReference |
TableReference |
テーブルのリファレンス |
getFriendlyName |
String |
テーブルの名前 |
getType |
String |
テーブルの種類 |
getTimePartitioning |
TimePartitioning |
テーブルの時間ベースのパーティショニング情報 |
getRangePartitioning |
RangePartitioning |
テーブルの範囲パーティション化情報 |
getClustering |
Clustering |
テーブルのクラスタリング情報 |
getHivePartitioningOptions |
HivePartitioningOptions |
ハイブ パーティション構成 |
getLabels |
Map<String,String> |
テーブルに関連付けられたラベル |
getView |
TableList.Tables.View |
テーブルのビュー情報 |
getCreationTime |
Long |
テーブルが作成された時刻(ミリ秒) |
getExpirationTime |
Long |
テーブルの有効期限が切れる時刻(ミリ秒) |
getRequirePartitionFilter |
Boolean |
パーティションの削除に使用できるパーティションフィルターを指定する必要があるか |
TableList.Tables.View
メソッド |
戻り値 |
説明 |
getUseLegacySql |
Boolean |
ビューにBigQueryのレガシーSQLを使用するか |
getPrivacyPolicy |
PrivacyPolicy |
ビューのプライバシーポリシー |
PrivacyPolicy
AggregationThresholdPolicy
メソッド |
戻り値 |
説明 |
getPrivacyUnitColumns |
List<String> |
ポリシーに関連付けられたプライバシーユニット列 |
getThreshold |
Long |
「集約しきい値」ポリシーのしきい値 |
Clustering
メソッド |
戻り値 |
説明 |
getFields |
List<String> |
クラスタリングするフィールド |
RangePartitioning
RangePartitioning.Range
メソッド |
戻り値 |
説明 |
getStart |
String |
範囲分割の開始 |
getEnd |
String |
範囲分割の終了 |
getInterval |
String |
各間隔の幅 |
TimePartitioning
メソッド |
戻り値 |
説明 |
getType |
String |
タイプ "DAY"、"HOUR"、"MONTH"、"YEAR" |
getExpirationMs |
Long |
パーティションのストレージを保持する時間(ミリ秒) |
getField |
String |
パーティション化するフィールド |
TableReference
メソッド |
戻り値 |
説明 |
getProjectId |
String |
プロジェクトID |
getDatasetId |
String |
データセットID |
getTableId |
String |
テーブルID |
HivePartitioningOptions
メソッド |
戻り値 |
説明 |
getMode |
String |
データの読み取り時に使用するハイブパーティショニングのモード
|
getSourceUriPrefix |
String |
ソースURIのプレフィックス(接頭語) |
getRequirePartitionFilter |
Boolean |
パーティションの削除に使用できるパーティションフィルターを指定するか |
getFields |
List<String> |
ハイブパーティションキー |
テーブルの種類
定義値 |
内容 |
TABLE |
通常のBigQuery テーブル |
VIEW |
SQLクエリによって定義された仮想テーブル |
EXTERNAL |
外部ストレージシステムに保存されているデータを参照するテーブル |
MATERIALIZED_VIEW |
SQLクエリによって定義された事前計算されたビュー |
SNAPSHOT |
特定の時点でのベーステーブルの内容を保持する不変のBigQueryテーブル |
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. 実行
public static void main(String[] args) throws Exception{
Bigquery bigquery = getBigquery();
Bigquery.Tables tables = bigquery.tables();
Bigquery.Tables.Get get = tables.get("プロジェクトID","データセットID","テーブルID");
Table res = get.execute();
System.out.println(res);
}
2.2.1. HTTPリクエスト
GET: https:\bigquery.googleapis.com/bigquery/v2/projects/{プロジェクトID}/datasets/{データセットID}/tables/{テーブルID}
が実行されます。
2.2.2. クエリパラメータ
Bigquery.Tables.Listのsetメソッドにより、クエリパラメータを追加できます。
メソッド |
引数 |
説明 |
setSelectedFields |
String |
取得するテーブルスキーマフィールドのリスト(カンマ区切り) 指定しない場合は、すべてのフィールドを取得 |
setView |
TableMetadataView(enum) |
どのテーブル情報が返されるかを決定するビューを指定 |
TableMetadataView
定義値 |
内容 |
TABLE_METADATA_VIEW_UNSPECIFIED |
デフォルト値 |
BASIC |
スキーマやパーティショニング仕様などの基本的なテーブル情報 |
STORAGE_STATS |
BASICビューのすべての情報とストレージ統計 |
FULL |
ストレージ統計を含むすべてのテーブル情報 |
2.3. レスポンスの内容
Table
メソッド |
戻り値 |
説明 |
getKind |
String |
リソースの種類 固定文字列:"bigquery#table" |
getEtag |
String |
リソースのハッシュ値 |
getId |
String |
テーブルID |
getSelfLink |
String |
このリソースに再度アクセスするために使用できるURL |
getTableReference |
TableReference |
テーブルのリファレンス |
getFriendlyName |
String |
テーブルの名前 |
getDescription |
String |
テーブルの説明 |
getLabels |
Map<String,String> |
テーブルに関連付けられたラベル |
getSchema |
TableSchema |
テーブルのスキーマ情報 |
getTimePartitioning |
TimePartitioning |
テーブルの時間ベースのパーティショニング情報 |
getRangePartitioning |
RangePartitioning |
テーブルの範囲パーティション化情報 |
getClustering |
Clustering |
テーブルのクラスタリング情報 |
getRequirePartitionFilter |
Boolean |
パーティションの削除に使用できるパーティションフィルターを指定する必要があるか |
getNumBytes |
Long |
テーブルの論理バイト単位のサイズ |
getNumLongTermBytes |
Long |
「長期ストレージ」とみなされるテーブル内の論理バイト数 |
getNumRows |
Long |
テーブル内のデータの行数 |
getCreationTime |
Long |
テーブルが作成された時刻(ミリ秒) |
getExpirationTime |
Long |
テーブルの有効期限が切れる時刻(ミリ秒) |
getLastModifiedTime |
Long |
テーブルが最後に変更された時刻(ミリ秒) |
getType |
String |
テーブルの種類 |
getView |
ViewDefinition |
テーブルのビュー情報 |
getMaterializedView |
MaterializedViewDefinition |
マテリアライズドビュー情報 |
getMaterializedViewStatus |
MaterializedViewStatus |
マテリアライズドビューのステータス情報 |
getExternalDataConfiguration |
ExternalDataConfiguration |
テーブルのデータ形式 |
getLocation |
String |
テーブルのロケーション |
getStreamingBuffer |
Streamingbuffer |
テーブルのストリーミングバッファーの情報 |
getEncryptionConfiguration |
EncryptionConfiguration |
カスタム暗号化構成の情報 |
getSnapshotDefinition |
SnapshotDefinition |
スナップショットの情報 |
getDefaultCollation |
String |
STRINGフィールドのデフォルトの照合仕様 "und:ci"(ロケールは不明、大文字と小文字は区別されない)、""(空の文字列。大文字と小文字を区別する) |
getDefaultRoundingMode |
RoundingMode(enum) |
NUMERIC、BIGNUMERICのデフォルトの丸めモード仕様 |
getCloneDefinition |
CloneDefinition |
クローンの情報 |
getNumTimeTravelPhysicalBytes |
Long |
タイムトラベルストレージの物理バイト数 |
getNumTotalLogicalBytes |
Long |
テーブル、マテリアライズドビュー内の論理バイトの合計数 |
getNumActiveLogicalBytes |
Long |
90日以内の論理バイト数 |
getNumLongTermLogicalBytes |
Long |
90日以上経過した論理バイトの数 |
getNumTotalPhysicalBytes |
Long |
テーブルの物理サイズ(バイト単位) |
getNumActivePhysicalBytes |
Long |
90日以内の物理バイトの数 |
getNumLongTermPhysicalBytes |
Long |
90日を超えた物理バイトの数 |
getNumPartitions |
Long |
テーブル、マテリアライズドビューに存在するパーティションの数 |
getMaxStaleness |
String |
テーブルがクエリされたときに返される可能性のあるデータの最大の古さ |
getTableConstraints |
TableConstraints |
テーブルの主キーと外部キーの情報 |
getResourceTags |
Map<String,String> |
テーブルに付けられたタグ |
getReplicas |
List<TableReference> |
テーブル上で現在アクティブなすべてのレプリカのテーブル情報 |
TableSchema
TableFieldSchema
メソッド |
戻り値 |
説明 |
getName |
String |
フィールド名 |
getType |
String |
フィールドのデータ型 |
getMode |
String |
フィールドモード "NULLABLE"、"REQUIRED"、"REPEATED" |
getFields |
List<TableFieldSchema> |
ネストされたスキーマフィールドリスト |
getDescription |
String |
フィールドの説明 MAX:1,024文字 |
getPolicyTags |
TableFieldSchema.PolicyTags |
このフィールドに付加されるポリシー |
getMaxLength |
Long |
STRINGSまたはBYTESのフィールドの値の最大長 |
getPrecision |
Long |
NUMERICまたはBIGNUMERICのフィールドの値に対する精度および位取り |
getScale |
Long |
精度 |
getRoundingMode |
RoundingMode(enum) |
NUMERICおよびBIGNUMERI型の値を格納するときに使用する丸めモード指定 |
getCollation |
String |
フィールドの照合順序 "und:ci"(ロケールは不明、大文字と小文字は区別されない)、""(デフォルトでは大文字と小文字を区別する |
getDefaultValueExpression |
String |
このフィールドのデフォルト値を指定するSQL式 |
getRangeElementType |
FieldElementType |
範囲のサブタイプ |
TableFieldSchema.PolicyTags
メソッド |
戻り値 |
説明 |
getNames |
List<String> |
ポリシータグリソース名のリスト |
FieldElementType
メソッド |
戻り値 |
説明 |
getType |
String |
フィールド要素のタイプ |
ViewDefinition
メソッド |
戻り値 |
説明 |
getQuery |
String |
BigQueryが実行するクエリ |
getUserDefinedFunctionResources |
List<UserDefinedFunctionResource> |
クエリで使用されるユーザー定義関数リソース情報 |
getUseLegacySql |
Boolean |
ビューにBigQueryのレガシーSQLを使用するか |
getPrivacyPolicy |
PrivacyPolicy |
ビューのプライバシーポリシー |
UserDefinedFunctionResource
メソッド |
戻り値 |
説明 |
getResourceUri |
String |
リソースのURI |
getInlineCode |
String |
ユーザー定義関数(UDF)のコードを含むインラインリソース |
MaterializedViewDefinition
メソッド |
戻り値 |
説明 |
getQuery |
String |
永続化されるクエリ |
getLastRefreshTime |
Long |
このマテリアライズド ビューが最後に更新された時刻(ミリ秒) |
getEnableRefresh |
Boolean |
ベーステーブルが更新されたときにマテリアライズドビューの自動リフレッシュを有効にするか |
getRefreshIntervalMs |
Long |
マテリアライズドビューが更新される最大頻度 |
getAllowNonIncrementalDefinition |
Boolean |
段階的に更新されないマテリアライズドビューを構築するか |
MaterializedViewStatus
メソッド |
戻り値 |
説明 |
getRefreshWatermark |
DateTime |
マテリアライズドビューのウォーターマークの更新 |
getLastRefreshStatus |
ErrorProto |
前回の自動更新のエラー結果 |
ErrorProto
メソッド |
戻り値 |
説明 |
getReason |
String |
エラーコード |
getLocation |
String |
エラーが発生した場所 |
getDebugInfo |
String |
デバッグ情報 |
getMessage |
String |
エラーの説明 |
ExternalDataConfiguration
メソッド |
戻り値 |
説明 |
getSourceUris |
List<String> |
GoogleCloud内のデータを指す完全修飾URI |
getFileSetSpecType |
FileSetSpecType(enum) |
ロードするファイルセットを構築するためにソースURIを解釈する情報 |
getSchema |
TableSchema |
データのスキーマ |
getSourceFormat |
String |
データ形式 |
getMaxBadRecords |
Integer |
データの読み取り時にBigQueryが無視できる不良レコードの最大数 |
getAutodetect |
Boolean |
スキーマとフォーマットのオプションを自動的に検出するか |
getIgnoreUnknownValues |
Boolean |
BigQuery がテーブル スキーマで表されていない追加の値を許可するか |
getCompression |
String |
データソースの圧縮タイプ |
getCsvOptions |
CsvOptions |
sourceFormatがCSVに設定されている場合に設定する追加のプロパティ |
getJsonOptions |
JsonOptions |
sourceFormatがJSONに設定されている場合に設定する追加のプロパティ |
getBigtableOptions |
BigtableOptions |
sourceFormatがBIGTABLEに設定されている場合の追加オプション |
getGoogleSheetsOptions |
GoogleSheetsOptions |
sourceFormatがGOOGLE_SHEETSに設定されている場合の追加オプション |
getHivePartitioningOptions |
HivePartitioningOptions |
ハイブのパーティショニングのサポート構成 |
getConnectionId |
String |
Azure Blob、Cloud Storage、S3 などの外部ストレージの読み取りに使用される資格情報 |
getDecimalTargetTypes |
List<DecimalTargetType(enum)> |
SQLデータ型のリスト |
getAvroOptions |
AvroOptions |
sourceFormatがAVROに設定されている場合に設定する追加のプロパティ |
getJsonExtension |
JsonExtension(enum) |
JSONのバリアントがロードされているかを示す |
getParquetOptions |
ParquetOptions |
sourceFormatがPARQUETに設定されている場合に設定する追加のプロパティ |
getReferenceFileSchemaUri |
String |
テーブルスキーマを含む参照ファイル |
getMetadataCacheMode |
MetadataCacheMode(enum) |
テーブルのメタデータキャッシュモード |
getObjectMetadata |
ObjectMetadata(enum) |
メタデータの種類 |
CsvOptions
メソッド |
戻り値 |
説明 |
getFieldDelimiter |
String |
CSVファイル内のフィールドの区切り文字 |
getSkipLeadingRows |
Long |
スキップするCSVファイルの先頭の行数 |
getQuote |
String |
CSVファイル内のデータセクションを引用するために使用される値 |
getAllowQuotedNewlines |
Boolean |
CSVファイル内で改行文字を含む引用符で囲まれたデータセクションを許可するか |
getAllowJaggedRows |
Boolean |
末尾のオプション列が欠落している行を受け入れるか |
getEncoding |
String |
データの文字エンコーディング "UTF-8"、"ISO-8859-1"、"UTF-16BE"、"UTF-16LE"、"UTF-32BE"、"UTF-32LE" |
getPreserveAsciiControlCharacters |
Boolean |
埋め込みASCII制御文字が保持されるか |
getNullMarker |
String |
CSVファイル内のnull値を表す文字列 |
JsonOptions
メソッド |
戻り値 |
説明 |
getEncoding |
String |
データの文字エンコーディング "UTF-8"、"UTF-16BE"、"UTF-16LE"、"UTF-32BE"、"UTF-32LE" |
BigtableOptions
メソッド |
戻り値 |
説明 |
getColumnFamilies |
List<BigtableColumnFamily> |
列ファミリーのリスト |
getIgnoreUnspecifiedColumnFamilies |
Boolean |
列ファミリーはテーブルスキーマで公開しないか |
getReadRowkeyAsString |
Boolean |
行キー列ファミリーを文字列に変換するか |
getOutputColumnFamiliesAsJson |
Boolean |
各列ファミリーは単一のJSON列として読み取るか |
BigtableColumnFamily
メソッド |
戻り値 |
説明 |
getFamilyId |
String |
列ファミリーの識別子 |
getType |
String |
セルの値を変換する型 "BYTES"、"STRING"、"INTEGER"、"FLOAT"、"BOOLEAN"、"JSON" |
getEncoding |
String |
エンコードの種類 "TEXT"(テキスト文字列)、"BINARY"(バイナリ) |
getColumns |
List<BigtableColumn> |
列フィールド |
getOnlyReadLatest |
Boolean |
この列の値の最新バージョンのみを公開するか |
BigtableColumn
メソッド |
戻り値 |
説明 |
getQualifierEncoded |
String |
列の修飾子 |
getQualifierString |
String |
修飾子の文字列 |
getFieldName |
String |
列フィールド名 |
getType |
String |
セルの値を変換する型 "BYTES"、"STRING"、"INTEGER"、"FLOAT"、"BOOLEAN"、"JSON" |
getEncoding |
String |
エンコードの種類 "TEXT"(テキスト文字列)、"BINARY"(バイナリ) |
getOnlyReadLatest |
Boolean |
この列の値の最新バージョンのみを公開するか |
GoogleSheetsOptions
メソッド |
戻り値 |
説明 |
getSkipLeadingRows |
Long |
読み取り時にスキップするシート上部の行数 |
getRange |
String |
クエリの対象となるシートの範囲 |
AvroOptions
メソッド |
戻り値 |
説明 |
getUseAvroLogicalTypes |
Boolean |
論理型を対応するBigQueryデータ型として解釈するか |
ParquetOptions
メソッド |
戻り値 |
説明 |
getEnumAsString |
Boolean |
デフォルトでParquetENUM論理型をBYTESではなくSTRINGとして推論するか |
getEnableListInference |
Boolean |
ParquetLIST論理型に対してスキーマ推論を使用するか |
Streamingbuffer
メソッド |
戻り値 |
説明 |
getEstimatedBytes |
String |
現在ストリーミングバッファーにあるバイト数の下限推定値 |
getEstimatedRows |
String |
現在ストリーミングバッファーにある行数の下限推定値 |
getOldestEntryTime |
Long |
最も古いエントリのタイムスタンプ(ミリ秒) |
EncryptionConfiguration
メソッド |
戻り値 |
説明 |
getKmsKeyName |
String |
CloudKMS暗号化キーの説明 |
SnapshotDefinition
メソッド |
戻り値 |
説明 |
getBaseTableReference |
TableReference |
スナップショットが作成されたテーブルIDのリファレンス |
getSnapshotTime |
DateTime |
スナップショットが作成された時刻 |
CloneDefinition
メソッド |
戻り値 |
説明 |
getBaseTableReference |
TableReference |
クローン作成されたテーブルIDのリファレンス |
getCloneTime |
DateTime |
ベーステーブルが複製された時刻 |
TableConstraints
PrimaryKey
メソッド |
戻り値 |
説明 |
getColumns |
List<String> |
主キー制約で構成される列 |
ForeignKey
メソッド |
戻り値 |
説明 |
getName |
String |
外部キー制約の名前 |
getReferencedTable |
TableReference |
主キーを保持し、この外部キーによって参照されるテーブル |
getColumnReferences |
List<ColumnReference> |
外部キーを構成する列 |
ColumnReference
メソッド |
戻り値 |
説明 |
getReferencingColumn |
String |
外部キーを構成する列 |
getReferencedColumn |
String |
ReferencingColumnによって参照される主キー内の列 |
RoundingMode
定義値 |
内容 |
ROUNDING_MODE_UNSPECIFIED |
未指定 |
ROUND_HALF_AWAY_FROM_ZERO |
NUMERIC値とBIGNUMERIC値の書き込み時に精度と位取りを適用するときに半分の値をゼロから四捨五入 |
ROUND_HALF_EVEN |
NUMERIC値とBIGNUMERIC値の書き込み時に精度と位取りを適用するときに半分の値を最も近い偶数値に丸める |
FileSetSpecType
定義値 |
内容 |
FILE_SET_SPEC_TYPE_FILE_SYSTEM_MATCH |
オブジェクトストアからファイルをリストすることによってソースURIを展開 |
FILE_SET_SPEC_TYPE_NEW_LINE_DELIMITED_MANIFEST |
提供されるURIが改行で区切られたマニフェストファイルであり、1行に1つのURIを展開 |
DecimalTargetType
定義値 |
内容 |
DECIMAL_TARGET_TYPE_UNSPECIFIED |
無効なタイプ |
NUMERIC |
10進数値はNUMERIC型に変換 |
BIGNUMERIC |
10進数値はBIGNUMERIC型に変換 |
STRING |
10進数値はSTRING型に変換 |
JsonExtension
定義値 |
内容 |
JSON_EXTENSION_UNSPECIFIED |
ソース形式は何も変更せずに解析 |
GEOJSON |
JSONのGeoJSONバリアントを使用 |
MetadataCacheMode
定義値 |
内容 |
METADATA_CACHE_MODE_UNSPECIFIED |
未定義 |
AUTOMATIC |
外部ソースからのメタデータキャッシュの自動バックグラウンド更新をトリガー |
MANUAL |
外部ソースからのメタデータキャッシュの手動更新をトリガー |
ObjectMetadata
定義値 |
内容 |
OBJECT_METADATA_UNSPECIFIED |
未定義 |
SIMPLE |
オブジェクトのディレクトリリスト |
ハイブパーティショニングのモード
定義値 |
内容 |
AUTO |
パーティションキーの名前とタイプを自動的に推測 |
STRINGS |
パーティションキー名を自動的に推測 |
CUSTOM |
パーティションキースキーマはソースURIプレフィックスでエンコード |
フィールドのデータ型
定義値 |
内容 |
STRING |
文字列 |
BYTES |
バイト |
INTEGER (or INT64) |
整数(8byte) |
FLOAT (or FLOAT64) |
浮動小数点数(8byte) |
BOOLEAN (or BOOL) |
真偽値 |
TIMESTAMP |
タイムスタンプ |
DATE |
日付 |
TIME |
時間 |
DATETIME |
日付時刻 |
GEOGRAPHY |
地理空間データ |
NUMERIC |
整数(16byte) |
BIGNUMERIC |
整数(32byte) |
JSON |
JSON型 |
RECORD (or STRUCT) |
構造体型 |
RANGE (Preview) |
RANGE型 |
おしまい。。