- スキーマ:
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; +-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------+ | 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; +---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------+ | 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 | +---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------+