LoginSignup
0
0

[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 レスポンスの内容
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.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

メソッド 戻り値 説明
getAggregationThresholdPolicy AggregationThresholdPolicy 集計しきい値に使用されるポリシー

AggregationThresholdPolicy

メソッド 戻り値 説明
getPrivacyUnitColumns List<String> ポリシーに関連付けられたプライバシーユニット列
getThreshold Long 「集約しきい値」ポリシーのしきい値

Clustering

メソッド 戻り値 説明
getFields List<String> クラスタリングするフィールド

RangePartitioning

メソッド 戻り値 説明
getField String 分割するフィールド
getRange RangePartitioning.Range 範囲分割の範囲情報

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

メソッド 戻り値 説明
getFields List<TableFieldSchema> テーブル内のフィールド説明

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

メソッド 戻り値 説明
getPrimaryKey PrimaryKey テーブルの列に対する主キー制約情報
getForeignKeys List<ForeignKey> 外部キー情報

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型


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