このテーブルを含む運用データベースがあります。
salesQuality salesPrice salesCategory
私のビジネス要件によると、salesQality
とsalesPrice
はメジャーです。
ただし、salesCategory
はディメンションです。
残念ながら、操作データベースには、salesCategory
値のない行がいくつかあります。
カテゴリディメンションにカテゴリ値がないこれらの売上を表すには、ファクトテーブルで何をする必要がありますか?
データウェアハウスは、ビジネスに使用可能なデータを提供するために存在します。 NULL値は、ユーザーに何も伝えません。あなたはもっとうまくやれる。また、ファクトテーブルをディメンションテーブルに結合するときにNULL値がドロップアウトし、過少カウントが発生します。
ディメンションテーブルに、トランザクションデータベースがNULLを格納する可能性のある各シナリオのレコードを含めます。私のすべてのディメンションテーブルには、「該当なし」と「不明」の2つ以上がありますが、これらは、より適切な回答が得られない場合のフォールバックオプションにすぎません。
例として、Salesperson
について考えてみます。トランザクションデータベースのこのフィールドにセールのNULLが含まれている場合は、...
Salespeople
ディメンションにまだ読み込まれていません各シナリオ(ビジネスにとってもっともらしい)はSalespeople
ディメンションの値を取得する必要があり、Sales
ファクトテーブルのすべてのレコードはこれらのいずれかを指している必要があります。必要に応じて、「営業担当者がいない」などの一般的なものに頼りますが、それは、改善すべき情報がない場合に限られます。
データウェアハウスでNULL値を使用する唯一の場所は、metricが欠落しているか、適用できない場所です。 SalesQuantity
フィールドとSalesPrice
フィールドはおそらくINT
タイプとDECIMAL
タイプであるため、テキスト値を保存することはできません。 「-1 =入力されていない、-2 =保留中、-3 =判読不能」などのコードを使用できますが、集計を実行するときは、これらを注意深く回避する必要があります。
欠落しているディメンションデータを処理するための標準的なアプローチは、ファクトテーブルの関連データにnull値を入力することです。
このアプローチが何らかの理由(テーブルの制約、ビジネスルール)で問題がある場合、技術的に正しくない場合でも、「null」を表す次元値を追加することは許容されます。このソリューションを実装することを選択した場合、増分処理ではnull <> nullを考慮する必要があることに注意してください。
別の可能な解決策は、ビジネスに(アプリケーションの変更、データフィードの変更、外部のデータベンダーとの相談など)、より堅牢なsalesCategoryディメンションを定義するように促すことです。つまり、ディメンションのケースをさらに定義して、欠落している値が削減または排除され、データに存在する穴が少なくなります。
基本的に、salesCategory列にNULL値があります。実際にテーブルにNULL値があることは、直面している問題のために一般的に悪いことです。
最も正確な結果が得られるように、これらの値が存在するようにデータを修正するのが最善の方法です。
NULL値を削除/修正できない場合は、行をNULLでフィルタリングすることに制限されますが、これにより集計が歪曲されるか、「UnknownMember」を使用してNULLが処理されます。これにより、Salescategory値がNULLの行が「不明」としてマークされます。このようにして、集計が正しくなり、すべてのデータが表示されます。
SSASを使用している場合は、ディメンション->プロパティ-> KeyColumns-> NullProcessingで「UnknownMember」を設定できます。