スキーマ:

ACCOUNT_USAGE

TABLE_PRUNING_HISTORY ビュー

このAccount Usageビューを使用して、すべてのテーブルに対する排除の効率性を判断したり、テーブルのデフォルトの(自然な)データ並び替えが排除にどのように影響するかを理解したりできます。

排除されたパーティションの数 (PARTITIONS_PRUNED) と、スキャンおよび排除されたパーティションの合計数 (PARTITIONS_SCANNED + PARTITIONS_PRUNED) を比較できます。

またこのビューを使用して、テーブルの 自動クラスタリング および 検索の最適化 を有効化する前と後の排除の効果を比較できます。

列名

データ型

説明

START_TIME

TIMESTAMP_LTZ

クエリが実行された時間範囲(時マーク)の開始時刻。

END_TIME

TIMESTAMP_LTZ

クエリが実行された時間範囲(時マーク)の終了時刻。

TABLE_ID

NUMBER

クエリされたテーブルの内部/システム生成識別子。

TABLE_NAME

TEXT

クエリされたテーブルの名前。

SCHEMA_ID

NUMBER

クエリされたテーブルを含むスキーマの内部/システム生成識別子。

SCHEMA_NAME

TEXT

クエリされたテーブルを含むスキーマの名前。

DATABASE_ID

NUMBER

クエリされたテーブルを含むデータベースの内部/システム生成識別子。

DATABASE_NAME

TEXT

クエリされたテーブルを含むデータベースの名前。

NUM_SCANS

NUMBER

テーブルの START_TIME から END_TIME の期間の全クエリ(SELECT ステートメントや DML ステートメントを含む)からのスキャン操作の数。クエリによっては、同じテーブルに対してスキャン操作が複数回行われる場合があります。

PARTITIONS_SCANNED

NUMBER

NUM_SCANS に記述されているスキャン処理中にスキャンされたパーティションの数。

PARTITIONS_PRUNED

NUMBER

NUM_SCANS に記述されているスキャン処理中に排除されたパーティションの数。

ROWS_SCANNED

NUMBER

NUM_SCANS に記述されているスキャン処理中にスキャンされた行の数。

ROWS_PRUNED

NUMBER

NUM_SCANS に記述されているスキャン処理中に排除された行の数。

使用上の注意

過去7日以内に排除の効率が最も低かったテーブルの上位5つを表示します。

SELECT
    table_id,
    ANY_VALUE(table_name) AS table_name,
    SUM(num_scans) AS total_num_scans,
    SUM(partitions_scanned) AS total_partitions_scanned,
    SUM(partitions_pruned) AS total_partitions_pruned,
    SUM(rows_scanned) AS total_rows_scanned,
    SUM(rows_pruned) AS total_rows_pruned
  FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_PRUNING_HISTORY
  WHERE start_time >= DATEADD(day, -7, CURRENT_TIMESTAMP())
  GROUP BY table_id
  ORDER BY
    total_partitions_pruned / GREATEST(total_partitions_scanned + total_partitions_pruned, 1),
    total_partitions_scanned DESC
  LIMIT 5;
Copy
+----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------+
| TABLE_ID | TABLE_NAME     | TOTAL_NUM_SCANS | TOTAL_PARTITIONS_SCANNED | TOTAL_PARTITIONS_PRUNED | TOTAL_ROWS_SCANNED | TOTAL_ROWS_PRUNED |
|----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------|
|   308226 | SENSOR_DATA_TS |              11 |                       21 |                       1 |           52500000 |           2500000 |
|   185364 | MATCH          |              16 |                       14 |                       2 |             240968 |             34424 |
|   209932 | ORDER_HEADER   |               2 |                      300 |                      56 |          421051748 |          75350790 |
|   209922 | K7_T1          |             261 |                      261 |                      52 |              30421 |              3272 |
|   338948 | SENSOR_DATA_TS |               9 |                       15 |                       3 |           38880000 |           8035200 |
+----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------+

上の例では GREATEST を使用して、スキャンされたパーティションの合計数と、排除されたパーティションの数がゼロの場合に、ゼロ除算が起きることを防いでいます。