[ バージョン ] ドロップダウン リストを使用してサービスを切り替えます。 ナビゲーションの詳細を確認します。
適用対象: Microsoft Fabric ✅ Azure Data Explorer ✅
データベースのスキーマを設計する場合、テーブルは 2 つのカテゴリのいずれかに大きく属していると考えてください。
ファクト テーブル
ファクト テーブルは、サービス ログや測定情報など、レコードが不変の "ファクト" であるテーブルです。 レコードは、ストリーミング形式または大きなチャンクでテーブルに徐々に追加されます。 レコードは、コストが原因で削除されるまで、または値が失われるまで保持されます。 それ以外の場合、レコードは更新されません。
エンティティ データは、エンティティ データの変化が遅いファクト テーブルに保持される場合があります。 たとえば、場所を変更する頻度の低いオフィス機器など、一部の物理的なエンティティに関するデータなどです。 Kusto のデータは不変であるため、一般的な方法は、各テーブルに 2 つの列を保持することです。
- エンティティを識別する ID (
string) 列 - 最終変更 (
datetime) タイムスタンプ列
その後、各エンティティ ID の最後のレコードのみが取得されます。
次元テーブル
ディメンション テーブル:
- 参照データ (エンティティ識別子からプロパティへの参照テーブルなど) を保持する
- 1 つのトランザクションで内容全体が変化するテーブルにスナップショットのようなデータを保持する
ディメンション テーブルは、新しいデータと共に定期的に取り込まれません。 代わりに、.set-or-replace、.move エクステント、.rename テーブルなどの操作を使用して、データ コンテンツ全体が一度に更新されます。
ディメンション テーブルがファクト テーブルから派生する場合があります。 このプロセスは、各エンティティの最後のレコードを受け取るテーブルに対するクエリを使用して、ファクト テーブルの 具体化されたビュー を使用して実行できます。
ファクト テーブルとディメンション テーブルを区別する
Kusto には、ファクト テーブルとディメンション テーブルを区別するプロセスがあります。 そのうちの 1 つは 連続エクスポートです。
これらのメカニズムは、ファクト テーブルのデータを 1 回だけ正確に処理することが保証されます。 これらは、データベース カーソル メカニズムに依存します。
たとえば、連続エクスポート ジョブを実行するたびに、データベース カーソルの最後の更新以降に取り込まれたすべてのレコードがエクスポートされます。 連続エクスポート ジョブでは、ファクト テーブルとディメンション テーブルを区別する必要があります。 ファクト テーブルは新しく取り込まれたデータのみを処理し、ディメンション テーブルは参照として使用されます。 そのため、テーブル全体を考慮する必要があります。
テーブルを "ファクト テーブル" または "ディメンション テーブル" として "マーク" する方法はありません。 データがテーブルに取り込まれる方法と、テーブルがどのように使用されるかは、その種類を識別する方法です。