次の方法で共有


予測最適化システム テーブル参照

重要

このシステム テーブルは パブリック プレビュー段階です

このテーブルにアクセスするには、リージョンが予測最適化をサポートしている必要があります。 Azure Databricks リージョン を参照してください。

この記事では、予測最適化操作履歴テーブルのスキーマに関する概要について説明し、サンプル クエリを提供します。 予測最適化によってデータ レイアウトを最適化し、最高レベルのパフォーマンスとコスト効率を実現します。 システム テーブルは、この機能の操作履歴を追跡します。 予測最適化の詳細については、「 Unity カタログのマネージド テーブルの予測最適化」を参照してください。

テーブル パス: このシステム テーブルは、 system.storage.predictive_optimization_operations_historyにあります。

配信に関する考慮事項

  • 予測最適化システム テーブルは、2 時間以内に更新されます。 ただし、課金情報がデータに入力されるまでに最大 24 時間かかる場合があります。
  • 予測最適化では、同じクラスターで複数の操作が実行される場合があります。 その場合、各操作に起因する DBU のシェアが概算されます。 これが、usage_unitESTIMATED_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 文字列 実行された最適化操作。 COMPACTIONVACUUMANALYZECLUSTERINGAUTO_CLUSTERING_COLUMN_SELECTIONDATA_SKIPPING_COLUMN_SELECTION、またはCOMPATIBILITY_MODE_REFRESHのいずれかの値を指定する必要があります。 COMPACTION
operation_id 文字列 最適化操作に使用する ID。 4dad1136-6a8f-418f-8234-6855cfaff18f
operation_status 文字列 最適化操作の状態。 SUCCESSFULまたはFAILED: INTERNAL_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 以前のデータ レイアウトは、古いクラスタリング キーが含まれているか、パーティション分割されていない場合は「なし」となります。
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 互換モードの更新操作。

クエリの例

次のセクションには、予測最適化システム テーブルの分析情報を得るために使用できるサンプル クエリが含まれています。 これらのクエリを機能させるには、パラメーター値を独自の値に置き換える必要があります。

この記事には、次のクエリの例が含まれています。

過去 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;