TABLE_STORAGE_BY_FOLDER ビュー
INFORMATION_SCHEMA.TABLE_STORAGE_BY_FOLDER ビューには、現在のプロジェクトの親フォルダ(サブフォルダを含む)内のテーブルまたはマテリアライズド ビューごとに 1 行が表示されます。
このテーブルはリアルタイム データを保持しておらず、数秒から数分遅れることがあります。パーティションまたはテーブルの有効期限のみに起因するストレージの変更、またはデータセットのタイムトラベル期間への変更に起因するストレージの変更が INFORMATION_SCHEMA.TABLE_STORAGE ビューに反映されるまでに、最大で 1 日かかる場合があります。1,000 を超えるテーブルを含むデータセットが削除された場合、削除されたデータセットのタイムトラベル期間が経過するまで、このビューに変更は反映されません。
テーブル ストレージ ビューでは、現在のストレージの消費を簡単にモニタリングできます。また、ストレージで論理非圧縮バイト、物理圧縮バイト、タイムトラベル バイトのいずれを使用しているかの詳細も確認できます。この情報は、今後の拡張に向けた計画や、テーブルの更新パターンの把握に役立ちます。
*_BYTES 列に含まれるデータ
テーブル ストレージ ビューの *_BYTES 列には、ストレージの使用量(バイト)に関する情報が含まれています。この情報は、マテリアライズド ビューと次のタイプのテーブルのストレージ使用量を調べることで確認できます。
- テーブルの作成と使用で説明されている方法のいずれかを使用して作成された永続テーブル。
- セッションで作成された一時テーブル。これらのテーブルは、生成された名前(「_c018003e063d09570001ef33ae401fad6ab92a6a」など)でデータセットに配置されます。
- 複数ステートメント クエリ(「スクリプト」)で作成された一時テーブル。これらのテーブルは、生成された名前(「_script72280c173c88442c3a7200183a50eeeaa4073719」など)でデータセットに配置されます。
クエリ結果キャッシュに保存されているデータは課金されないため、*_BYTES 列の値には含まれません。
クローンとスナップショットは、ベーステーブルが使用しているストレージとの差分を表示するのではなく、あたかも完全なテーブルであるかのように *_BYTES 列の値を表示するため、過大評価になります。請求では、ストレージ使用量のこの差分が正しく反映されます。クローンとスナップショットの作成によって保存され、課金されるデルタバイトについて詳しくは、TABLE_STORAGE_USAGE_TIMELINE ビューをご覧ください。
ストレージ課金を予測する
データセットの毎月のストレージ請求額を予測するには、データセットによって使用されるデータセット ストレージ課金モデルに応じて、このビュー内の logical 列または physical *_BYTES 列を使用できます。これはおおよその予測であり、正確な請求額は、BigQuery のストレージ課金インフラストラクチャによる使用量に基づいて計算され、Cloud Billing に表示されることに注意してください。
論理課金モデルを使用するデータセットの場合、月間ストレージ費用は、次のように予測できます。
((ACTIVE_LOGICAL_BYTES value / POW(1024, 3)) * アクティブな論理バイト料金) + ((LONG_TERM_LOGICAL_BYTES value / POW(1024, 3)) * 長期論理バイトの料金)
テーブルの ACTIVE_LOGICAL_BYTES 値には、そのテーブルで現在使用されているアクティブなバイト数が反映されます。
物理課金モデルを使用するデータセットの場合は、ストレージ費用を次のように予測できます。
((ACTIVE_PHYSICAL_BYTES + FAIL_SAFE_PHYSICAL_BYTES value / POW(1024, 3)) * アクティブな物理バイト料金) + ((LONG_TERM_PHYSICAL_BYTES value / POW(1024, 3)) * 長期物理バイトの料金)
テーブルの ACTIVE_PHYSICAL_BYTES 値には、そのテーブルで現在使用されているアクティブなバイト数と、そのテーブルのタイムトラベルに使用されたバイト数が反映されます。
テーブルのアクティブなバイト数のみを表示するには、ACTIVE_PHYSICAL_BYTES 値から TIME_TRAVEL_PHYSICAL_BYTES 値を減算します。
詳細については、ストレージの料金をご覧ください。
必要な権限
INFORMATION_SCHEMA.TABLE_STORAGE_BY_FOLDER ビューをクエリするには、プロジェクトの親フォルダに対する次の Identity and Access Management(IAM)権限が必要です。
- bigquery.tables.get
- bigquery.tables.list
次の各 IAM 事前定義ロールには、上の権限が含まれています。
- roles/bigquery.admin
- roles/bigquery.dataViewer
- roles/bigquery.dataEditor
- roles/bigquery.metadataViewer
BigQuery の権限の詳細については、BigQuery の IAM ロールと権限をご覧ください。
スキーマ
INFORMATION_SCHEMA.TABLE_STORAGE_BY_FOLDER ビューのスキーマは次のとおりです。
| 列名 | データ型 | 値 | 
|---|---|---|
| FOLDER_NUMBERS | REPEATED INTEGER | プロジェクトを含むフォルダの番号 ID。プロジェクトを直接含むフォルダから始まり、子フォルダを含むフォルダというように続きます。たとえば、 FOLDER_NUMBERSが[1, 2, 3]の場合、フォルダ1にはプロジェクトが直接含まれ、フォルダ2には1が含まれ、フォルダ3には2が含まれます。この列は、TABLE_STORAGE_BY_FOLDERにのみ入力されます。 | 
| PROJECT_ID | STRING | データセットを含むプロジェクトのプロジェクト ID。 | 
| PROJECT_NUMBER | INT64 | データセットを含むプロジェクトのプロジェクト番号 | 
| TABLE_CATALOG | STRING | データセットを含むプロジェクトのプロジェクト ID。 | 
| TABLE_SCHEMA | STRING | テーブルやマテリアライズド ビューを含むデータセットの名前( datasetIdとも呼ばれる) | 
| TABLE_NAME | STRING | テーブルまたはマテリアライズド ビューの名前( tableIdとも呼ばれる) | 
| CREATION_TIME | TIMESTAMP | テーブルの作成時刻。 | 
| TOTAL_ROWS | INT64 | テーブルまたはマテリアライズド ビューの行の総数 | 
| TOTAL_PARTITIONS | INT64 | テーブルまたはマテリアライズド ビューに存在するパーティションの数。パーティション分割されていないテーブルは 0 を返します。 | 
| TOTAL_LOGICAL_BYTES | INT64 | テーブルまたはマテリアライズド ビューの論理(非圧縮)バイトの合計数 | 
| ACTIVE_LOGICAL_BYTES | INT64 | 作成後 90 日未満の論理(非圧縮)バイト数。 | 
| LONG_TERM_LOGICAL_BYTES | INT64 | 作成後 90 日以上経過した論理(非圧縮)バイト数。 | 
| CURRENT_PHYSICAL_BYTES | INT64 | テーブルの現在のストレージを表す、すべてのパーティションにわたる物理バイトの合計数。 | 
| TOTAL_PHYSICAL_BYTES | INT64 | ストレージに使用されている物理(圧縮)バイトの合計数。これには、アクティブ データ、長期保存データ、タイムトラベル データ(削除または変更されたデータ)のバイト数が含まれます。フェイルセーフ(タイムトラベル期間後も保持される、削除または変更されたデータ)のバイト数は含まれません。 | 
| ACTIVE_PHYSICAL_BYTES | INT64 | 90 日未満の物理(圧縮)バイト数。これには、タイムトラベル(削除または変更されたデータ)のバイト数が含まれます。 | 
| LONG_TERM_PHYSICAL_BYTES | INT64 | 作成後 90 日以上経過した物理(圧縮)バイト数 | 
| TIME_TRAVEL_PHYSICAL_BYTES | INT64 | タイムトラベル ストレージ(削除または変更されたデータ)で使用される物理(圧縮)バイト数 | 
| STORAGE_LAST_MODIFIED_TIME | TIMESTAMP | データがテーブルに最後に書き込まれた時刻。 | 
| DELETED | BOOLEAN | テーブルが削除されているかどうかを示します。 | 
| TABLE_TYPE | STRING | テーブルのタイプ。例: BASE TABLE | 
| MANAGED_TABLE_TYPE | STRING | この列はプレビュー版です。テーブルのマネージド タイプ。たとえば、 NATIVEやBIGLAKEです。 | 
| FAIL_SAFE_PHYSICAL_BYTES | INT64 | フェイルセーフ ストレージで使用される物理(圧縮)バイト数(削除または変更されたデータ) | 
| LAST_METADATA_INDEX_REFRESH_TIME | TIMESTAMP | テーブルのメタデータ インデックスの最終更新時間。 | 
| TABLE_DELETION_REASON | STRING | DELETEDフィールドが true の場合のテーブル削除の理由。値は次のいずれかになります。
 | 
| TABLE_DELETION_TIME | TIMESTAMP | テーブルの削除時刻。 | 
スコープと構文
このビューに対するクエリでは、リージョン修飾子を指定する必要があります。次の表に、このビューのリージョン スコープを示します。
| ビュー名 | リソース スコープ | リージョン スコープ | 
|---|---|---|
| [`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_FOLDER | 指定したプロジェクトを含むフォルダ | REGION | 
- 
  省略可: PROJECT_ID: Google Cloud プロジェクトの ID。指定しない場合は、デフォルトのプロジェクトが使用されます。
- 
  REGION: 任意のデータセット リージョン名。例:`region-us`
指定されたプロジェクトの親フォルダにあるテーブルのストレージ情報を取得するには、次のクエリを実行します。
SELECT * FROM `myProject`.`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_FOLDER;
例
次のクエリは、フォルダ内のどのプロジェクトが最もストレージを使用しているかを示します。
SELECT project_id, SUM(total_logical_bytes) AS total_logical_bytes FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_FOLDER GROUP BY project_id ORDER BY total_logical_bytes DESC;
次のような結果になります。
+---------------------+---------------------+ | project_id | total_logical_bytes | +---------------------+---------------------+ | projecta | 971329178274633 | +---------------------+---------------------+ | projectb | 834638211024843 | +---------------------+---------------------+ | projectc | 562910385625126 | +---------------------+---------------------+