web-dev-qa-db-ja.com

ファクトテーブルの有効なto / from列は意味がありますか?

最近、factテーブルの「validfrom」列と「validto」列に出くわしました。明らかに、これはディメンションでは一般的ですが、ファクトテーブルでこれまで見たことがなく、広く使用されていることを示唆する情報を見つけることができません。

テーブルの粒度は銀行口座のトランザクションに類似しているため、預金が行われるか、金額が引き出されると、新しいファクトが生成されます。列を含める理由は、ソースシステム/データの品質が低いことと相まって、一貫性のあるレポートが必要なためです(このレポートを今日実行する場合は、1週間前と同じである必要があります)。ユーザーはソースシステムにアクセスして、「このデポジットは実際には100ポンドではなく、10ポンドでした」と言うことができます。これが発生すると、2番目のファクト行が挿入され、元の行が期限切れになります。

私の考えでは、履歴を維持するために元のファクトを逆にするために新しいファクト行を挿入し(例では-£100を適用)、更新されたファクトを挿入する必要があります(+£10)。有効なto/from列を操作すると、レポート作成時にユーザーが複雑になりすぎ、エラーのリスク(アクティブなファクトと期限切れのファクトの両方を合計する)が発生するように感じます。

誰か経験がありますこれについてありますか参照それを具体的にカバーしていますか(ブログ投稿、記事、さらには本)?

2
Matt

有効性は、ユーザーがデータをどのように見たいかによって異なります。あなたはそれを単なる取引の事実として見ています。他のタイプのファクトテーブルには、定期的なスナップショットと累積スナップショットが含まれます。誤ったエントリを減らすために誰かが行を修正したすべての時間を確認したい場合は、発効日が適切である可能性があるため、トランザクションが更新されたことは明らかです。これにより、タイプ2SCDにいくらか似たファクトテーブルが作成されます。

キンボールグループには あなたの質問に直接対処する記事 があります。

これがKimball Groupの設計のヒントです これは、効果的な日付の累積snpashotファクトテーブルについて説明しています。

元の行を逆にするトランザクションを追加するだけでよいというのは正しいかもしれません。トランザクションを確認して合計するだけでよい場合は、有効なソリューションになる可能性があります。これは私がほとんどの会計データが機能するのを見た方法です。キンボール氏によると、有効な日付のファクトテーブルは、特定の時点でのアカウントの残高をすばやく計算するのに役立つ可能性があります。特に、 ゆっくりと変化する残高を追跡する の場合はそうです。しかし、これはかなりまれなケースです。ユーザーを混乱させるという懸念も有効だと思います。それが教育によって克服できるかどうか、そしてデータに追加された分析能力にとってそれが価値があるかどうかを判断する必要があります。

私の事実のほとんどは単純なトランザクションまたは定期的なスナップショットであったため、データウェアハウジングの経験ではこれほど多くのことを行う必要はありませんでした。しかし、私は多対多の関係のためにいくつかの効果的な日付の付いたブリッジテーブルを作成しました。

3
mmarie

粒度は「トランザクション」または「現在のバランス」です。あなたの説明に基づくと、この事実には2つの組み合わせがあるようです。粒度が「トランザクション」の場合は、バランスを計算し、誤って入力された「トランザクション」を修正する必要があります。粒度が「現在の残高」である場合は、エラーの修正とトランザクションに基づく値の更新の違いに対処する必要があります。

0
Ray