ファクトテーブルおよびディメンションテーブル

[ バージョン ] ドロップダウン リストを使用してサービスを切り替えます。 ナビゲーションの詳細を確認します
適用対象: Microsoft Fabric ✅ Azure Data Explorer ✅

データベースのスキーマを設計する場合、テーブルは 2 つのカテゴリのいずれかに大きく属していると考えてください。

ファクト テーブル

ファクト テーブルは、サービス ログや測定情報など、レコードが不変の "ファクト" であるテーブルです。 レコードは、ストリーミング形式または大きなチャンクでテーブルに徐々に追加されます。 レコードは、コストが原因で削除されるまで、または値が失われるまで保持されます。 それ以外の場合、レコードは更新されません。

エンティティ データは、エンティティ データの変化が遅いファクト テーブルに保持される場合があります。 たとえば、場所を変更する頻度の低いオフィス機器など、一部の物理的なエンティティに関するデータなどです。 Kusto のデータは不変であるため、一般的な方法は、各テーブルに 2 つの列を保持することです。

  • エンティティを識別する ID (string) 列
  • 最終変更 (datetime) タイムスタンプ列

その後、各エンティティ ID の最後のレコードのみが取得されます。

次元テーブル

ディメンション テーブル:

  • 参照データ (エンティティ識別子からプロパティへの参照テーブルなど) を保持する
  • 1 つのトランザクションで内容全体が変化するテーブルにスナップショットのようなデータを保持する

ディメンション テーブルは、新しいデータと共に定期的に取り込まれません。 代わりに、.set-or-replace、.move エクステント.rename テーブルなどの操作を使用して、データ コンテンツ全体が一度に更新されます。

ディメンション テーブルがファクト テーブルから派生する場合があります。 このプロセスは、各エンティティの最後のレコードを受け取るテーブルに対するクエリを使用して、ファクト テーブルの 具体化されたビュー を使用して実行できます。

ファクト テーブルとディメンション テーブルを区別する

Kusto には、ファクト テーブルとディメンション テーブルを区別するプロセスがあります。 そのうちの 1 つは 連続エクスポートです

これらのメカニズムは、ファクト テーブルのデータを 1 回だけ正確に処理することが保証されます。 これらは、データベース カーソル メカニズムに依存します。

たとえば、連続エクスポート ジョブを実行するたびに、データベース カーソルの最後の更新以降に取り込まれたすべてのレコードがエクスポートされます。 連続エクスポート ジョブでは、ファクト テーブルとディメンション テーブルを区別する必要があります。 ファクト テーブルは新しく取り込まれたデータのみを処理し、ディメンション テーブルは参照として使用されます。 そのため、テーブル全体を考慮する必要があります。

テーブルを "ファクト テーブル" または "ディメンション テーブル" として "マーク" する方法はありません。 データがテーブルに取り込まれる方法と、テーブルがどのように使用されるかは、その種類を識別する方法です。