重要
このシステム テーブルは パブリック プレビュー段階です。
この記事では、予測最適化操作履歴テーブルのスキーマに関する概要について説明し、サンプル クエリを提供します。 予測最適化によってデータ レイアウトを最適化し、最高レベルのパフォーマンスとコスト効率を実現します。 システム テーブルは、この機能の操作履歴を追跡します。 予測最適化の詳細については、「 Unity カタログのマネージド テーブルの予測最適化」を参照してください。
テーブル パス: このシステム テーブルは、 system.storage.predictive_optimization_operations_historyにあります。
配信に関する考慮事項
- 予測最適化システム テーブルは、2 時間以内に更新されます。 ただし、課金情報がデータに入力されるまでに最大 24 時間かかる場合があります。
- 予測最適化では、同じクラスターで複数の操作が実行される場合があります。 その場合、各操作に起因する DBU のシェアが概算されます。 これが、
usage_unitがESTIMATED_DBUに設定されている理由です。 クラスターに使用される DBU の総数が正確であることに変わりはありません。
予測最適化 テーブルのスキーマ
予測最適化操作履歴システム テーブルでは、次のスキーマが使用されます。
| 列名 | データ型 | 説明 | 例 |
|---|---|---|---|
account_id |
文字列 | アカウントの ID。 | 11e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
文字列 | 予測最適化で操作を実行したワークスペースの ID。 | 1234567890123456 |
start_time |
timestamp | 操作を開始した時刻。 タイムゾーン情報は、UTC を表す +00:00 という形式で値の末尾に記録されます。 |
2023-01-09 10:00:00.000+00:00 |
end_time |
timestamp | 操作を終了した時刻。 タイムゾーン情報は、UTC を表す +00:00 という形式で値の末尾に記録されます。 |
2023-01-09 11:00:00.000+00:00 |
metastore_name |
文字列 | 最適化されたテーブルが属するメタストアの名前。 | metastore |
metastore_id |
文字列 | 最適化されたテーブルが属するメタストアの ID。 | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
catalog_name |
文字列 | 最適化されたテーブルが属するカタログの名前。 | catalog |
schema_name |
文字列 | 最適化されたテーブルが属するスキーマの名前。 | schema |
table_id |
文字列 | 最適化されたテーブルの ID。 | 138ebb4b-3757-41bb-9e18-52b38d3d2836 |
table_name |
文字列 | 最適化されたテーブルの名前。 | table1 |
operation_type |
文字列 | 実行された最適化操作。 値は COMPACTION、 VACUUM、 ANALYZE、 CLUSTERING、 AUTO_CLUSTERING_COLUMN_SELECTION、 DATA_SKIPPING_COLUMN_SELECTION、 COMPATIBILITY_MODE_REFRESH、 DELETE、または PURGEのいずれかでなければなりません。 |
COMPACTION |
operation_id |
文字列 | 最適化操作に使用する ID。 | 4dad1136-6a8f-418f-8234-6855cfaff18f |
operation_status |
文字列 | 最適化操作の状態。
SUCCESSFUL、FAILED: INTERNAL_ERROR、FAILED: AUTO_TTL_COLUMN_DOES_NOT_EXIST_ERROR、またはFAILED: PRIVATE_LINK_SETUP_ERRORのいずれかの値を指定する必要があります。 |
SUCCESSFUL |
operation_metrics |
マップ [string, string] | 実施された具体的な最適化の詳細。 操作 メトリックを参照してください。 | {"number_of_output_files":"100","number_of_compacted_files":"1000","amount_of_output_data_bytes":"4000","amount_of_data_compacted_bytes":"10000"} |
usage_unit |
文字列 | 使用単位が発生します。 次の値である必要があります: ESTIMATED_DBU。 |
ESTIMATED_DBU |
usage_quantity |
10 進 | 使用単位の量。 | 2.12 |
操作メトリック
operation_metrics列に記録されるメトリックは、操作の種類によって異なります。
| 操作名 | 操作の説明 | 操作メトリック | 説明 |
|---|---|---|---|
COMPACTION |
ファイル サイズを最適化することで、クエリのパフォーマンスを向上させます。 「データ ファイル レイアウトを最適化する」を参照してください。 | number_of_compacted_files |
削除されたファイルの数。 |
amount_of_data_compacted_bytes |
削除されたバイト数。 | ||
number_of_output_files |
追加された新しいファイルの数。 | ||
amount_of_output_data_bytes |
加えたバイト数。 | ||
VACUUM |
テーブルで参照されなくなったデータ ファイルを削除することで、ストレージ コストを削減します。 「VACUUM を使用して未使用のデータ ファイルを削除する」を参照してください。 | number_of_deleted_files |
ガットコレクションされたファイル数。 |
amount_of_data_deleted_bytes |
ガベージコレクションされたバイト数。 | ||
ANALYZE |
クエリのパフォーマンスを向上させるために、統計の増分更新をトリガーします。 詳細については、ANALYZE TABLEを参照してください。 | amount_of_scanned_bytes |
スキャンされたバイト数。 |
number_of_scanned_files |
スキャンしたファイルの数。 | ||
staleness_percentage_reduced |
その減少は、古臭さの割合の減少です。 この統計値は、 ANALYZE を実行する頻度に応じて0から100の範囲で変動します。 |
||
CLUSTERING |
有効なテーブルの増分クラスタリングをトリガーします。 表に液体クラスタリングを使用するを参照してください。 | number_of_removed_files |
削除されたファイルの数。 |
number_of_clustered_files |
追加された新しいファイルの数。 | ||
amount_of_data_removed_bytes |
削除されたバイト数。 | ||
amount_of_clustered_data_bytes |
加えたバイト数。 | ||
AUTO_CLUSTERING_COLUMN_SELECTION |
クラスタリング列を進化させるかどうかを評価します。 自動液体クラスタリングを参照してください。 | old_clustering_columns |
以前のデータレイアウトは、古いクラスタリングキーやパーティションがなければ「None」の場合もあります。 |
new_clustering_columns |
新しいクラスタリングコラム。 | ||
has_column_selection_changed |
クラスタリング列が変わったかどうかの指標です。 | ||
additional_reason |
クラスタリング列の変更や変化なしの理由。 | ||
DATA_SKIPPING_COLUMN_SELECTION |
ワークロードの統計をスキップしてデータが欠落している列を検出し、それらをバックフィルします。 「データのスキップ」を参照してください。 | amount_of_scanned_bytes |
スキャンされたバイト数。 |
number_of_scanned_files |
スキャンしたファイルの数。 | ||
added_data_skipping_columns |
データスキッピングの列が追加されました。 | ||
removed_data_skipping_columns |
データスキップの列は削除されました。 | ||
old_data_skipping_columns |
前述のデータスキップカラムの網羅的なリストです。 | ||
new_data_skipping_columns |
現在のデータスキッピングカラムの網羅的なリストです。 | ||
COMPATIBILITY_MODE_REFRESH |
互換モードが最新でないかどうかを検出し、テーブルを更新します。 互換モードを参照してください。 | N/A | 互換性モードのリフレッシュ操作。 |
DELETE |
自動期限を過ぎた行を削除します。 自動有効期間を使用した自動行削除を参照してください。 | number_of_deleted_rows |
削除された行の数。 これは削除対象となる行がなかった 0 です。 |
amount_of_data_deleted_bytes |
削除されたバイト数。 | ||
PURGE |
削除ベクターで既に削除された行を物理的に削除するためにデータファイルを書き換えます。 削除ベクターを有効にしたテーブルで VACUUM 前に実行されます。
自動有効期間を使用した自動行削除を参照してください。 |
number_of_purged_rows |
削除された行数。 これは、どの行もパージの対象がなかった 0 です。
自動有効期間を使用した自動行削除を参照してください。 |
クエリの例
次のセクションには、予測最適化システム テーブルの分析情報を得るために使用できるサンプル クエリが含まれています。 これらのクエリを機能させるには、パラメーター値を独自の値に置き換える必要があります。
この記事には、次のクエリの例が含まれています。
- 過去 30 日間に予測最適化が使用された推定 DBU の数
- 予測最適化が過去 30 日間に最も多く費やしたテーブル (推定コスト) はどれですか?
- 予測最適化が最も多くの操作を実行しているテーブルはどれですか?
- 特定のカタログの場合、圧縮された合計バイト数はいくつですか?
- 最も多くのバイトがバキュームされたテーブルは何ですか?
- 予測最適化によって実行される操作の成功率は何ですか?
過去 30 日間に予測最適化が使用された DBU の推定数はいくつですか?
SELECT SUM(usage_quantity)
FROM system.storage.predictive_optimization_operations_history
WHERE
usage_unit = "ESTIMATED_DBU"
AND timestampdiff(day, start_time, Now()) < 30;
特定の ETL パイプラインで同じ値を検索するには、まずそのパイプライン内のテーブルを見つけてから、DBU を検索します。
-- Find all full table names for the pipeline:
WITH pipeline_mapping AS (
SELECT DISTINCT target_table_full_name AS target_table_name
FROM system.access.table_lineage
WHERE entity_type = 'PIPELINE' AND entity_id = :pipeline_id
)
-- Select all operations for any table in that pipeline:
SELECT SUM(usage_quantity)
FROM system.storage.predictive_optimization_operations_history
WHERE
CONCAT_WS('.', catalog_name, schema_name, table_name)
IN ( SELECT target_table_name FROM pipeline_mapping)
AND usage_unit = "ESTIMATED_DBU"
AND timestampdiff(day, start_time, Now()) < 30;
過去 30 日間に予測最適化で最も多く使用されたテーブル (推定コスト) はどれですか?
SELECT
metastore_name,
catalog_name,
schema_name,
table_name,
SUM(usage_quantity) as totalDbus
FROM system.storage.predictive_optimization_operations_history
WHERE
usage_unit = "ESTIMATED_DBU"
AND timestampdiff(day, start_time, Now()) < 30
GROUP BY ALL
ORDER BY totalDbus DESC;
予測最適化で最も多くの操作を実行しているテーブルはどれですか?
SELECT
metastore_name,
catalog_name,
schema_name,
table_name,
operation_type,
COUNT(DISTINCT operation_id) as operations
FROM system.storage.predictive_optimization_operations_history
GROUP BY ALL
ORDER BY operations DESC;
特定のカタログについて、圧縮された合計バイト数はいくつですか?
SELECT
schema_name,
table_name,
SUM(operation_metrics["amount_of_data_compacted_bytes"]) as bytesCompacted
FROM system.storage.predictive_optimization_operations_history
WHERE
metastore_name = :metastore_name
AND catalog_name = :catalog_name
AND operation_type = "COMPACTION"
GROUP BY ALL
ORDER BY bytesCompacted DESC;
最も多くのバイト数がバキューム処理されたテーブルはどれですか?
SELECT
metastore_name,
catalog_name,
schema_name,
table_name,
SUM(operation_metrics["amount_of_data_deleted_bytes"]) as bytesVacuumed
FROM system.storage.predictive_optimization_operations_history
WHERE operation_type = "VACUUM"
GROUP BY ALL
ORDER BY bytesVacuumed DESC;
予測最適化によって実行される操作の成功率は何ですか?
WITH operation_counts AS (
SELECT
COUNT(DISTINCT (CASE WHEN operation_status = "SUCCESSFUL" THEN operation_id END)) as successes,
COUNT(DISTINCT operation_id) as total_operations
FROM system.storage.predictive_optimization_operations_history
)
SELECT successes / total_operations as success_rate
FROM operation_counts;