2

私はホテルの DB に取り組んでいますが、人々は常に予約とキャンセルを繰り返しているため、予約テーブルは大きく変化します。予約テーブルを SSAS のファクト テーブルに変換する最良の方法を見つけようとしています。そこから適切な統計を取得できるようにしたいと考えています。

例:クライアント X が 9 月 20 日に 12 月 20 日の部屋を予約し、10 月 20 日に注文をキャンセルした場合。キューブを 9 月 (11 月に実行) に実行し、9 月に予約された部屋数を確認したい場合、注文 X は合計にカウントされます。
ただし、YTD 計算 (11 月に実行) のためにキューブを実行すると、注文は合計にカウントされません。

毎晩同じファクト テーブルに更新を挿入し、予約番号 (一意のキー) に加えてリビジョン列をテーブルに追加することを考えていました。例に戻ると、クライアント X の予約番号が 1234 であるとします。最初にテーブルに入力するとリビジョン 0 が取得され、10 月にキャンセル レコードを追加するとリビジョン 1 が取得されます (もちろん、タイムスタンプはオンになっています)。行)。

ここで、時間の経過を確認したい場合は、タイムスタンプで取得して、MAX(リビジョン) を確認できます。

それは理にかなっていますか?何か案は?

注: 注文をキャンセルする例を挙げましたが、別の統計を追跡したいと考えています。


私が読んだ別のオプションは、キューブを分割することですが、テーブル全体を分割しますか? 毎晩変更を追加できるようにしたいです。テーブル全体を毎晩分割する必要がありますか? それは巨大なテーブルです。

4

1 に答える 1

0

これを処理する 1 つの方法は、予約とキャンセルのレコードをファクト テーブルに挿入することです。max(revision) を見る必要はありません - キューブはすべて集約に関するものです。

テーブルが次のようになっている場合:

booking number, date, rooms booked

次のようにデータを入力できます。

00001, 9/10, 1
00002, 9/12, 1
00001, 10/5, -1

そうすれば、あなたの YTD には、あなたが見ている月の時点で常に正確な情報が含まれます。予約した部屋を合計するだけです。

于 2013-10-11T13:53:25.600 に答える