- スキーマ:
TABLE_PRUNING_HISTORY ビュー¶
このAccount Usageビューを使用して、すべてのテーブルに対する排除の効率性を判断したり、テーブルのデフォルトの(自然な)データ並び替えが排除にどのように影響するかを理解したりできます。
排除されたパーティションの数 (PARTITIONS_PRUNED) と、スキャンおよび排除されたパーティションの合計数 (PARTITIONS_SCANNED + PARTITIONS_PRUNED) を比較できます。
このビューの各行は、指定された時間間隔内の特定のテーブルのプルーニング履歴を表します。データは時間間隔ごとに集計され、スキャン数、スキャンされたパーティション数、プルーニングされたパーティション数、スキャンされた行数、プルーニングされた行数に関する情報が含まれます。
またこのビューを使用して、テーブルの 自動クラスタリング および 検索の最適化 を有効化する前と後の排除の効果を比較できます。
TABLE_QUERY_PRUNING_HISTORY ビュー および COLUMN_QUERY_PRUNING_HISTORY ビュー もご参照ください。
列¶
| 列名 | データ型 | 説明 | 
|---|---|---|
| START_TIME | TIMESTAMP_LTZ | クエリが実行され、完了した時間範囲の開始時刻(時間単位)。 | 
| END_TIME | TIMESTAMP_LTZ | クエリが実行され、完了した時間範囲の終了時刻(時間単位)。 | 
| TABLE_ID | NUMBER | クエリされたテーブルの内部/システム生成識別子。 | 
| TABLE_NAME | VARCHAR | クエリされたテーブルの名前。 | 
| SCHEMA_ID | NUMBER | クエリされたテーブルを含むスキーマの内部/システム生成識別子。 | 
| SCHEMA_NAME | VARCHAR | クエリされたテーブルを含むスキーマの名前。 | 
| DATABASE_ID | NUMBER | クエリされたテーブルを含むデータベースの内部/システム生成識別子。 | 
| DATABASE_NAME | VARCHAR | クエリされたテーブルを含むデータベースの名前。 | 
| NUM_SCANS | NUMBER | テーブルの START_TIME から END_TIME の期間の全クエリ(SELECT ステートメントや DML ステートメントを含む)からのスキャン操作の数。クエリによっては、同じテーブルに対してスキャン操作が複数回行われる場合があります。 | 
| PARTITIONS_SCANNED | NUMBER | 
 | 
| PARTITIONS_PRUNED | NUMBER | 
 | 
| ROWS_SCANNED | NUMBER | 
 | 
| ROWS_PRUNED | NUMBER | 
 | 
使用上の注意¶
- ビューの待機時間は最大6時間です。 
- このビューには、 ハイブリッドテーブル の排除情報は含まれません。 
- このビューには、クエリごとに実行時間の長い上位1,000件のテーブルスキャンのデータが保持されます。非常に複雑なクエリだけがこのスキャン数を超えるため、データが省略されることはほとんどありません。 
例¶
過去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;
+----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------+
| 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 を使用して、スキャンされたパーティションの合計数と、排除されたパーティションの数がゼロの場合に、ゼロ除算が起きることを防いでいます。