BigQueryでINFORMATION_SCHEMAを使ってメタデータを確認。
BQで利用状況を確認する際、INFORMATION_SCHEMAを使うのが便利です。
これはBQのメタデータへアクセスできるビューです。過去180日間に遡って、アクセスできます。テーブルの統計量調査する時に使えそうですね。
cloud.google.com
https://cloud.google.com/bigquery/docs/information-schema-tables?hl=ja#before_you_begin
View | 概要 |
---|---|
SCHEMATA | スキーマ(データセット)の情報 |
SCHEMATA_OPTIONS | データセット内のすべてのテーブルのデフォルトの有効期間や、データ型などがわかります。 |
TABLES | テーブルの情報 |
COLUMNS | テーブル内のカラム情報 |
サンプルコード
SCHEMATA
-- Returns metadata for datasets in a region. SELECT * FROM region-us.INFORMATION_SCHEMA.SCHEMATA;
結果
カラム | 概要 |
---|---|
CATALOG_NAME | プロジェクト名 |
SCHEMA_NAME | データセット名 |
CREATION_TIME | 作成日時 |
LAST_MODIFIED_TIME | 最終更新日時 |
LOCATION | ロケーション |
OPTIONS
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA_OPTIONS WHERE option_name="default_table_expiration_days"
結果
カラム | 概要 |
---|---|
TABLE_CATALOG | データセットを含むプロジェクトのプロジェクト ID |
TABLE_SCHEMA | datasetId とも呼ばれる、テーブルやビューを含むデータセットの名前 |
TABLE_NAME | テーブルまたはビューの名前(tableId とも呼ばれる) |
OPTION_NAME | options テーブル内の名前値の 1 つ |
OPTION_TYPE | オプション テーブルのデータ型の値の 1 つ |
OPTION_VALUE | オプション テーブルの値オプションの 1 つ |
TABLES
データセット以下のテーブルの情報が確認できます。
カラム | 概要 |
---|---|
table_catalog | データセットを含むプロジェクトのプロジェクト ID。 |
table_schema | datasetId とも呼ばれる、テーブルやビューを含むデータセットの名前。 |
table_name | テーブルまたはビューの名前(tableId とも呼ばれる)。 |
table_type | テーブルタイプ: 次のいずれかです。 ・BASE TABLE: 標準のテーブル ・CLONE: テーブル クローン(プレビュー) ・SNAPSHOT: テーブル スナップショット ・VIEW: ビュー ・MATERIALIZED VIEW: マテリアライズド ビュー ・EXTERNAL: 外部データソースを参照するテーブル |
is_insertable_into | YES または NO(テーブルが DML INSERT ステートメントに対応しているかどうかによる) |
is_typed | 値は常に NO |
creation_time | テーブルの作成時間 |
ddl | テーブルの再作成に使用できる DDL ステートメント(CREATE TABLE、CREATE VIEW など) |
COLUMNS
COLUMNSは、指定したテーブルのカラム情報を出力します。
SELECT * FROM `bigquery-public-data.austin_311.INFORMATION_SCHEMA.COLUMNS`
結果
column_nameでカラム名、data_typeでデータ型、IS_NULLABLEでカラムのNULLを許可しているかなど各カラムの情報が見れます。
カラム | 概要 |
---|---|
TABLE_CATALOG | データセットを含むプロジェクトのプロジェクト ID |
TABLE_SCHEMA | datasetId とも呼ばれる、テーブルを含むデータセットの名前 |
TABLE_NAME | テーブルまたはビューの名前(tableId とも呼ばれる) |
COLUMN_NAME | 列の名前 |
BigQueryで、利用状況を確認する際、監査ログを使う手もありますが、過去180日間でよければ、こちらの方が手軽に使えるかもしれません。