🐧

Microsoft Fabricのシステムテーブル・システムビューの解説

2025/02/15に公開

0.対象となる読者

Ⅰ. Microsoft Fabricを使用している/使用を考えている方。
Ⅱ. Microsoft Fabricのシステムテーブルやシステムビューについて気になっていた方
Ⅲ. Microsoft Fabricのデータ変換/前処理に対する理解度を深めたい方


1.初めに

Microsoft Fabricを使用してデータレイクハウスやデータウェアハウスからデータフロー(Gen 2)を用いてファイルをテーブル化する際、システムテーブ[1]ルが表示されることがあります。
データフローを使用してファイルをテーブル化する際に表示される以下のようなシステムテーブルのリストに見覚えはありませんか?

システムテーブルのリスト

自分がアップロードしたファイルでもないし、なにこれ?って気になったことありませんか?

これらのテーブルは、データ変換作業には支障をきたさないものの、何のために存在するのかも気になりますよね。
本記事では、これらのシステムテーブルについて解説いたします。
中身を把握できないシステムテーブルやシステムビュー[2]もあり、詳細なの役割については解説できないですが、その名前から役割について一緒に考えていけたらと思います。


2.queryinsights

  • queryinsights.exec_requests_history[3]
    → queryinsights.exec_requests_history:完了した各SQL要求に関する情報を提供するもで、以下のようなテーブルで構成されています。
列名 データ型 説明
distributed_statement_id uniqueidentifier 各クエリの一意の ID
submit_time datetime2 クエリが送信された時刻
start_time datetime2 クエリの実行が始まった時刻
command varchar(8000) 実行されたクエリのテキスト
login_name varchar(128) クエリを送信したユーザーまたはシステムの名前
program_name varchar(128) セッションを開始したクライアントプログラムの名前
row_count bigint クエリによって取得された行の数
total_elapsed_time_ms int クエリが完了するまでの時間(ミリ秒)
status varchar(30) クエリの状態(成功、失敗、キャンセル)
session_id smallint ユーザーセッションのID
connection_id uniqueidentifier 接続の識別番号
batch_id uniqueidentifier グループ化されたクエリのID
root_batch_id uniqueidentifier メイングループのID(入れ子の場合)
query_hash varchar(200) クエリのハッシュ値(同様のクエリを識別するため)
label varchar(8000) SELECTクエリに関連付けられたラベル文字列
allocated_cpu_time_ms bigint クエリの実行に割り当てられたCPU時間
data_scanned_remote_storage_mb decimal(18,3) リモートストレージから読み取られたデータ量(MB)
data_scanned_memory_mb decimal(18,3) ローカルメモリから読み取られたデータ量(MB)
data_scanned_disk_mb decimal(18,3) ローカルディスクから読み取られたデータ量(MB)

  • queryinsights.exec_sessions_history[4]
    → queryinsights.exec_sessions_history:完了した各セッションに関する情報を提供して、以下のようなテーブルで構成されています。
列名 データ型 説明
distributed_statement_id uniqueidentifier クエリの一意のID
submit_time datetime2 クエリが送信された時刻
start_time datetime2 クエリの実行が始まった時刻
command varchar(8000) 実行されたクエリのテキスト
login_name varchar(128) クエリを送信したユーザーまたはシステムの名前
program_name varchar(128) セッションを開始したクライアントプログラムの名前
row_count bigint クエリによって取得された行の数
total_elapsed_time_ms int クエリが完了するまでの時間(ミリ秒)
status varchar(30) クエリの状態(成功、失敗、キャンセル)
session_id smallint ユーザーセッションのID
connection_id uniqueidentifier 接続の識別番号
batch_id uniqueidentifier グループ化されたクエリのID
root_batch_id uniqueidentifier メイングループのID(入れ子の場合)
query_hash varchar(200) クエリのハッシュ値(同様のクエリを識別するため)
label varchar(8000) SELECTクエリに関連付けられたラベル文字列
allocated_cpu_time_ms bigint クエリの実行に割り当てられたCPU時間
data_scanned_remote_storage_mb decimal(18,3) リモートストレージから読み取られたデータ量(MB)
data_scanned_memory_mb decimal(18,3) ローカルメモリから読み取られたデータ量(MB)
data_scanned_disk_mb decimal(18,3) ローカルディスクから読み取られたデータ量(MB)

  • queryinsights.frequently_run_queries[5]
    → queryinsights.frequently_run_queries:Fabricデータウェアハウスで頻繁に実行されるクエリに関する情報を提供するもので、以下のようなテーブルで構成されています。
列名 データ型 説明
last_run_start_time datetime2 最新のクエリ実行時刻
last_run_command varchar(8000) 最後に実行されたクエリのテキスト
number_of_runs int クエリが実行された回数
avg_total_elapsed_time_ms int すべての実行の平均クエリ実行時間(ミリ秒)
last_run_total_elapsed_time_ms int 最後の実行にかかった時間(ミリ秒)
last_dist_statement_id uniqueidentifier クエリを queryinsights.exec_requests_history にリンクするID
last_run_session_id smallint 最後の実行のユーザーセッションID
min_run_total_elapsed_time_ms int 最短のクエリ実行時間(ミリ秒)
max_run_total_elapsed_time_ms int 最長のクエリ実行時間(ミリ秒)
number_of_successful_runs int 正常に実行されたクエリの数
number_of_failed_runs int 失敗したクエリの数
number_of_cancelled_runs int 取り消されたクエリの数

queryinsights.long_running_queries[6]
→ queryinsights.long_running_queries :SQLクエリの実行時間に関する情報を提供するもので、以下のようなテーブルで構成されています。

列名 データ型 説明
last_run_start_time datetime2 最新のクエリ実行時刻
last_run_command varchar(8000) 最後に実行されたクエリのテキスト
median_total_elapsed_time_ms int クエリ実行時間の中央値(ミリ秒)
number_of_runs int クエリが実行された回数
last_run_total_elapsed_time_ms int 最後の実行にかかった時間(ミリ秒)
last_dist_statement_id uniqueidentifier クエリを queryinsights.exec_requests_history にリンクするID
last_run_session_id smallint 最後の実行のユーザーセッションID

しかし、システムテーブルの名前からある程度推測できるのかな?という部分もあるので皆さんと共に考えていきたいと思います。


3.sys.managed_delta_table

  • sys.managed_delta_table_checkpoints
    → Microsoft Fabricのウェアハウスでデルタテーブルのチェックポイント情報を表示するためのシステムビューだと思います。デルタテーブルは変更が頻繁に行われるデータを効率的に管理するために使用されるので、データの一貫性を保つためにデータのスナップショットを定期的にチェックポイントとして作成してるものだと思います。
    このシステムビューを構築することによって、Microsoft Fabricの中でデルタテーブルの最新のチェックポイント情報を確認したり、データの整合性を確保したりすることができるのではないかと考えております。

  • sys.managed_delta_table_forks
    → Microsoft Fabricのウェアハウスでデルタテーブルのフォーク(分岐)情報を表示するためのシステムビューだと思います。デルタテーブルのフォークはデータの変更や更新が行われる際に新しいフォークが作成されるので、これによりデータの一貫性や整合性が保たれます。
    このシステムビューを使用することで、Fabricの中でデルタテーブルのフォークの状態や履歴を確認したり、データの整合性を確保することができるのではないかと考えております。

  • sys.managed_delta_table_log_files
    → Microsoft Fabricのウェアハウスでデルタテーブルのログファイル情報を表示するためのシステムビューだと思います。デルタテーブルのログファイルは、データの変更履歴やトランザクション情報を保持するために使用されて、Fabricの中でデルタテーブルのログファイルの状態や内容を確認することができるのではいかと思います。

  • sys.managed_delta_table
    → Microsoft Fabricのウェアハウスで管理されているデルタテーブルの情報を表示するためのシステムビューだと考えられます。デルタテーブルはデータの変更履歴を効率的に管理し、データの一貫性を保つために使用されるもので、Fabric内でテーブルのメタデータや状態を確認したり、データの整合性を確保することができると思います。


4.sys.sys_dw

  • sys.sys_dw_checkpoint_files
    → 先と同様にデータウェアハウスのチェックポイントファイルに関する情報を提供するシステムビューとなります。チェックポイントファイルは、データウェアハウスのデータ整合性を維持し、データの復元を可能にするために使用されるので、Fabricの中でデータウェアハウスの管理やトラブルシューティングが容易になる役割をしていると推測されます。

  • sys.sys_dw_mainfest_files
    → このビューはデータウェアハウスのマニフェストファイルに関する情報を提供するものだと思います。マニフェストファイルはデータウェアハウスのデータ管理や構成情報を保持するために使用されますので、これによりデータウェアハウスの管理やトラブルシューティングが容易になりますと推測されます。

  • sys.sys_dw_physical_table_forks
    → 物理的なテーブルフォークは、データウェアハウスでのデータ変更や更新の履歴を管理するために使用されるもので、このビューは物理的なテーブルフォークに関する情報を提供するものだと思います。各フォークの詳細情報が含まれていると推測していて、これによってFabric内にデータの整合性を確保することでフォークの管理やトラブルシューティングが容易になるのと考えています。

  • sys.sys_dw_physical_tables
    → 上のと同じく、データウェアハウス内の物理テーブルに関する情報を提供していて、各物理テーブルのメタデータや状態に関する詳細情報が含まれていると思っています。具体的には、物理テーブルの名前、作成日時、サイズ、ストレージの場所などを確認して、データウェアハウス内の物理テーブルの管理やトラブルシューティングが容易になる仕組みかなと思います。

  • sys.sys_dw_schemas
    → 最後になりますが、このシステムビューはデータウェアハウス内のスキーマに関する情報を提供するものになります。スキーマはデータベース内のテーブルやその他のオブジェクトをグループ化するための構造で、各スキーマの名前、作成日時、所有者、関連するテーブルやオブジェクトの情報が含まれていると推定しています。このシステムビューでデータウェアハウス内のスキーマの管理やトラブルシューティングが容易になり、スキーマごとにデータを整理し、アクセス権や権限を適切に設定するための重要な情報を提供することになると思います。


5.まとめ

公開されているシステムテーブル

テーブル名 説明
queryinsights.exec_requests_history 完了した各SQL要求に関する情報を提供する
queryinsights.exec_sessions_history 完了した各セッションに関する情報を提供する
queryinsights.frequently_run_queries 頻繁に実行されるクエリに関する情報を提供する
queryinsights.long_running_queries 実行時間の長いクエリに関する情報を提供する

システムビュー(推測)

システムビュー名 説明
sys.managed_delta_table_checkpoints デルタテーブルのチェックポイント情報を表示するためのシステムビュー
sys.managed_delta_table_forks デルタテーブルのフォーク情報を表示するためのシステムビュー
sys.managed_delta_table_log_files デルタテーブルのログファイル情報を表示するためのシステムビュー
sys.managed_delta_table 管理されているデルタテーブルの情報を表示するためのシステムビュー

データウェアハウス関連のシステムビュー(推測)

システムビュー名 説明
sys.sys_dw_checkpoint_files データウェアハウスのチェックポイントファイルに関する情報を提供するシステムビュー
sys.sys_dw_mainfest_files データウェアハウスのマニフェストファイルに関する情報を提供するシステムビュー
sys.sys_dw_physical_table_forks 物理的なテーブルフォークに関する情報を提供するシステムビュー
sys.sys_dw_physical_tables データウェアハウス内の物理テーブルに関する情報を提供するシステムビュー
sys.sys_dw_schemas データウェアハウス内のスキーマに関する情報を提供するシステムビュー

いかがでしょうか。
システムビューの場合中身を把握できず、詳細な説明はできなかったのですが、この記事を読むことでMicrosoft Fabricのシステムテーブルやシステムビューについての理解を深める一助となれば幸いです。
引き続き、データ管理や分析の効率化に役立つFabric関連情報を提供していきますので、どうぞお楽しみに!
間違っている情報やご意見やご質問がありましたら、ぜひコメント欄でお知らせください。

お疲れ様でした。

脚注
  1. データベース内でシステムが内部的に使用するためのテーブル。このテーブルには、データベースのメタデータやシステム情報が格納されている。 ↩︎

  2. 既存のテーブルから特定のデータを抽出して表示する仮想的なテーブル。ビューは実際のデータを持たず、定義されたSQLクエリの結果を仮想的にテーブルのように見せる仕組みである。 ↩︎

  3. https://learn.microsoft.com/ja-jp/sql/relational-databases/system-views/queryinsights-exec-requests-history-transact-sql?view=fabric ↩︎

  4. https://learn.microsoft.com/ja-jp/sql/relational-databases/system-views/queryinsights-exec-sessions-history-transact-sql?view=fabric ↩︎

  5. https://learn.microsoft.com/ja-jp/sql/relational-databases/system-views/queryinsights-frequently-run-queries-transact-sql?view=fabric ↩︎

  6. https://learn.microsoft.com/ja-jp/sql/relational-databases/system-views/queryinsights-long-running-queries-transact-sql?view=fabric ↩︎

ヘッドウォータース

Discussion