私はデータ ウェアハウスに取り組んでおり、最終的には、営業時間に基づいてレポートを作成する必要があります。現在、私の時間ディメンションは時間単位です。「営業時間」のビット フィールドを含めるように時間ディメンションを変更する必要があるのか、それとも分析の最後に何らかの計算メジャーを作成する必要があるのか疑問に思っています。超壮大な例はありますか?
7 に答える
ビット (または別の列) を使用して、格納された時点でその時間が営業時間であるかどうかを指定します。そうしないと、営業時間を変更すると、履歴レポートを再現できなくなります。
すべての販売データは同じタイムゾーンにありますか? たとえば、異なるタイム ゾーンの販売店や異なるタイム ゾーンのエンド ユーザーの売上を追跡していますか? その場合、販売ファクト テーブルに「営業時間」のビット フィールドを作成することをお勧めします。これは、異なるタイム ゾーンのユーザーと店舗についてその場で計算するのはかなり難しいためです。
さらに、このデータは頻繁に変更される可能性が低いため、売上がデータ ウェアハウスにインポートされるときに一度だけ計算する必要があります。「このセールは以前は営業時間内に行われていましたが、今は営業時間外です」と言うつもりはありません。
営業時間は営業ルールのため、今後変更になる場合があります
営業時間を基本時間と期間として表す (例: StartTime 0900、Duration 9.5 時間)。これにより、間隔を簡単に変更したり、さまざまな営業時間に基づいて what-if シナリオを実行したり、クエリを複雑にすることなく営業時間を日付の変更線にまたがらせたりすることができます。
もちろん、夏時間の複雑さを避けるために、すべての日時は現地時間ではなくGMT (UTC) にする必要があります。
編集: 質問を誤解したと思います。データはすでに時間単位で細かく設定されています... いいえ、私の答えは正しいと思いますが、営業時間間隔の有効開始日と終了日が追加されています。これにより、履歴を保持しながら、将来的に粒度を変更することができます
Microsoft PerformancePoint 2007 を使用している場合は、さまざまなオプションを試してテストできます。ディメンションを変更して、結果をチャート、ピボット テーブル、その他のレポート ツールなどに出力できます。
http://office.microsoft.com/en-us/performancepoint/FX101680481033.aspx
「営業時間」は時間の経過とともに変更される可能性がありますか? 各行を営業時間フラグに関連付ける必要があるかどうか、またはレポート自体 (または何らかの参照) テーブルを使用して、そのトランザクションが営業時間中に発生したかどうかを判断するだけで十分かどうかを尋ねていると思います。
他のすべてが同じであれば、行にフラグを立てるのではなく、おそらくレポートでそれを行うようにしますが、営業時間が時間の経過とともに変動する場合は、履歴データが正しいままであることを確認するために行にフラグを立てる必要があります.
これが役立つかどうかはわかりませんが、UCT を使用して常に保存し、開始時刻と終了時刻を指定して営業時間を指定します。それがセットアップされると、それは簡単なIf (SpecificHour >= BusinessStartingHour) And (SpecificHour <= BusinessEndingHour) Then ...
操作になります。
これは判断の合図だと思います...パフォーマンステスト、システムの使用状況などに依存するものです.個人的には、ロジックを処理して何が何であるかを判断するために、フラグを保持するインデックス付きフィールドを作成するでしょう. t 営業時間前 (つまり、データが読み込まれるとき)。正しく実行すれば (また、特定の使用法にもよりますが)、パフォーマンスも向上する可能性があると思います。