Microsoft Fabricのシステムテーブル・システムビューの解説
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関連情報を提供していきますので、どうぞお楽しみに!
間違っている情報やご意見やご質問がありましたら、ぜひコメント欄でお知らせください。
お疲れ様でした。
-
データベース内でシステムが内部的に使用するためのテーブル。このテーブルには、データベースのメタデータやシステム情報が格納されている。 ↩︎
-
既存のテーブルから特定のデータを抽出して表示する仮想的なテーブル。ビューは実際のデータを持たず、定義されたSQLクエリの結果を仮想的にテーブルのように見せる仕組みである。 ↩︎
-
https://learn.microsoft.com/ja-jp/sql/relational-databases/system-views/queryinsights-exec-requests-history-transact-sql?view=fabric ↩︎
-
https://learn.microsoft.com/ja-jp/sql/relational-databases/system-views/queryinsights-exec-sessions-history-transact-sql?view=fabric ↩︎
-
https://learn.microsoft.com/ja-jp/sql/relational-databases/system-views/queryinsights-frequently-run-queries-transact-sql?view=fabric ↩︎
-
https://learn.microsoft.com/ja-jp/sql/relational-databases/system-views/queryinsights-long-running-queries-transact-sql?view=fabric ↩︎
Discussion