スキーマ:

ACCOUNT_USAGE

TABLE_QUERY_PRUNING_HISTORY ビュー

このアカウント使用状況ビューを使用すると、クエリ実行中のデータアクセスパターンをより深く理解できます。

このビューは COLUMN_QUERY_PRUNING_HISTORY ビュー と組み合わせて使用​​できます。たとえば、TABLE_QUERY_PRUNING_HISTORY ビューを使用してターゲットテーブルへのアクセスを特定し、COLUMN_QUERY_PRUNING_HISTORY ビューを使用してそれらのテーブルで頻繁に使用される列を特定できます。

特に、これらのビューは、クラスタリングキー について、より適切な選択を行うのに役立ちます。

このビューの各行は、指定された時間間隔内の特定のテーブルのクエリプルーニング履歴を表します。データは時間間隔ごとに集計され、実行されたクエリ数、スキャンされたパーティション数、プルーニングされたパーティション数、スキャンされた行、プルーニングされた行数、一致した行数に関する情報が含まれています。

TABLE_PRUNING_HISTORY ビュー および クエリプルーニング もご参照ください。

列名

データ型

説明

INTERVAL_START_TIME

TIMESTAMP_LTZ

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

INTERVAL_END_TIME

TIMESTAMP_LTZ

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

TABLE_ID

NUMBER

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

TABLE_NAME

VARCHAR

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

SCHEMA_ID

NUMBER

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

SCHEMA_NAME

VARCHAR

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

DATABASE_ID

NUMBER

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

DATABASE_NAME

VARCHAR

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

WAREHOUSE_ID

NUMBER

クエリの実行に使用されたウェアハウスの内部/システム生成識別子。

WAREHOUSE_NAME

VARCHAR

クエリを実行したウェアハウスの名前。

QUERY_HASH

VARCHAR

正規化された SQL テキストに基づいて計算された ハッシュ値

QUERY_PARAMETERIZED_HASH

VARCHAR

パラメーター化されたクエリに基づいて計算された ハッシュ値

NUM_QUERIES

NUMBER

この時間範囲内に、この特定の QUERY_HASH 値を持ち、このウェアハウスを使って、このテーブルにアクセスしたクエリの実行数。

AGGREGATE_QUERY_ELAPSED_TIME

NUMBER

NUM_QUERIES で定義されたクエリの合計経過時間(ミリ秒単位)。この合計には、キューイングや、コンパイルおよび実行に関連しないその他の時間が含まれます。

AGGREGATE_QUERY_COMPILATION_TIME

NUMBER

NUM_QUERIES で定義されたクエリの合計コンパイル時間(ミリ秒単位)。

AGGREGATE_QUERY_EXECUTION_TIME

NUMBER

NUM_QUERIES で定義されたクエリの合計実行時間(ミリ秒単位)。

PARTITIONS_SCANNED

NUMBER

NUM_QUERIES で定義されたクエリで、このテーブルでスキャンされたパーティション数。

PARTITIONS_PRUNED

NUMBER

NUM_QUERIES で定義されたクエリのためにこのテーブルでプルーニングされた行の数。これらのパーティションはクエリ処理中に削除され、スキャンされなかったため、クエリの効率が向上しました。

ROWS_SCANNED

NUMBER

NUM_QUERIES で定義されたクエリでこのテーブルでスキャンされた行数。

ROWS_PRUNED

NUMBER

NUM_QUERIES で定義されたクエリでこのテーブルでプルーニングされた行数。これらの行はクエリ処理中に削除され、スキャンされなかったため、クエリの効率が向上しました。

ROWS_MATCHED

NUMBER

NUM_QUERIES で定義されたクエリでこのテーブルをスキャンしているときに、WHERE 句のフィルターに一致した行数。

使用上の注意

  • ビューのレイテンシは最大6時間になる場合があります。

  • データは1年間保持されます。

  • このビューには、 ハイブリッドテーブル の排除情報は含まれません。

  • プッシュダウンの最適化のメリットが得られない複雑なフィルタリング条件の場合、フィルタリング条件に一致しない行でも、テーブルスキャン操作中にフィルタリングされないことがあります。したがって、これらの行は ROWS_MATCHED の値にカウントされます。

  • USAGE_VIEWER データベースロールが付与されているユーザーとロールは、このビューにアクセスできます。詳細については、 SNOWFLAKE データベースロール をご参照ください。

  • このビューには、クエリごとに実行時間の長い上位1,000件のテーブルスキャンのデータが保持されます。非常に複雑なクエリだけがこのスキャン数を超えるため、データが省略されることはほとんどありません。

最初のクエリは、特定の日付の特定のテーブルに対するクエリで、少なくとも1行がプルーニングされたクエリのプルーニング履歴を返す単純な機能例です。結果の各行は、WHERE 句(INTERVAL_START_TIME)で指定された日付に完了したクエリの特定の1時間の時間枠に属します。

このクエリの sensor_data_ts テーブルには、5356800 行の合成時系列データが含まれています。ここに示されているすべてのクエリで、テーブル内の行のちょうど半分(2678400)がプルーニングされました。一致する行の数はこれらのクエリによって異なります。

SELECT interval_start_time, interval_end_time, table_id, table_name,
    num_queries, query_hash, rows_scanned, rows_pruned, rows_matched
  FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_QUERY_PRUNING_HISTORY
  WHERE interval_start_time LIKE '2025-04-24%'
    AND table_name='SENSOR_DATA_TS'
    AND rows_pruned > 0
  ORDER BY 1;
Copy
+-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------+
| INTERVAL_START_TIME           | INTERVAL_END_TIME             | TABLE_ID | TABLE_NAME     | NUM_QUERIES | QUERY_HASH                       | ROWS_SCANNED | ROWS_PRUNED | ROWS_MATCHED |
|-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------|
| 2025-04-24 14:00:00.000 -0700 | 2025-04-24 15:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 833f4ec4ebbda62c7882e1839faec799 |      2678400 |     2678400 |            5 |
| 2025-04-24 14:00:00.000 -0700 | 2025-04-24 15:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 94d16d2fa0892247d27066e45b58d3e4 |      2678400 |     2678400 |            5 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 24e89f5c01209d7b395f56559f893dc8 |      2678400 |     2678400 |      2678400 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 71c9c6570ef849e66f83af0625b793a2 |      2678400 |     2678400 |      2678400 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | c75cb64d446c1ba222ac14ebd1923641 |      2678400 |     2678400 |      2678400 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 5a3784c59fc788804c903d96698dd969 |      2678400 |     2678400 |            5 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 069a076d4d6850e3d242fccf498c7c6d |      2678400 |     2678400 |       216642 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 4c9c5aacb7a61fc6858d107c5c46fb14 |      2678400 |     2678400 |       216642 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 3e509721380b262906c62c76107e46c9 |      2678400 |     2678400 |      2678400 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 9f7e607fe48faa18e332f65cde49f037 |      2678400 |     2678400 |      2678400 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | b4488d8a84ab18b00dd6b2fead4a4cb4 |      2678400 |     2678400 |       394106 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 157d775a79c5bae120fb5db9f7d8d027 |      2678400 |     2678400 |       216642 |
+-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------+

次の例では、各テーブルの「プルーニング率」を計算し、特定のウェアハウスで特定の時間に実行されたクエリに対するプルーニング効率を判断するのに役立てます。このクエリは、クエリごとにスキャンされたパーティションの数も返します。これにより、スキャンする必要のあるデータ量に対するクエリのパフォーマンスを理解するのに役立ちます。

このクエリの結果から、ユーザーは、sensor_data_ts の方が sensor_data1 よりもはるかに多くアクセスされているものの、これらのクエリは通常、実行時間が短く、スキャンされるマイクロパーティションの数も少ないと結論付けるかもしれません。

SELECT
    SUM(total_execution_time) as sum_exec_time,
    SUM(num_queries) as sum_num_queries,
    SUM(partitions_pruned)/SUM(partitions_pruned+partitions_scanned) AS pruning_ratio,
    SUM(partitions_scanned)/SUM(num_queries) AS partitions_scanned_per_query,
    table_name,
    schema_name,
    database_name
  FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_QUERY_PRUNING_HISTORY
  WHERE interval_start_time > '2025-04-25 12:00:00.000 -0700'
    AND warehouse_name = 'SENSORS_WH'
  GROUP BY ALL
  ORDER BY 1 DESC;
Copy
+---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------+
| SUM_EXEC_TIME | SUM_NUM_QUERIES | PRUNING_RATIO | PARTITIONS_SCANNED_PER_QUERY | TABLE_NAME     | SCHEMA_NAME    | DATABASE_NAME |
|---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------|
|       1938743 |           19283 |      0.230000 |                  1800.000000 | SENSOR_DATA1   | SENSORS_SCHEMA | SENSORS_DB    |
|        123732 |           39320 |      0.950000 |                    12.000000 | SENSOR_DATA_TS | SENSORS_SCHEMA | SENSORS_DB    |
+---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------+