web-dev-qa-db-ja.com

緩やかに変化するディメンションを検証するために使用できる既知の戦略がある場合、それはどのようなものですか?

私のデータウェアハウスに顧客ディメンションがあります(SSAS 2014多次元)。これは、変更を追跡するための開始日フィールドと終了日フィールドだけで、タイプII SCDとしてセットアップされます。 (null終了日=現在)。

毎日のロードが実行され、変更が流れ込んでいるのを見ると、新しいレコードが作成されていないときに作成されるのではないかと心配することがあります。

どのようなスクリプトを実行して、各顧客をそれぞれの履歴で比較し、適切に変更されていることを確認できますか?

また、ギャップとアイランドの問題に触れていると思いますが、開始日と終了日がすべて連続していることを確認するための戦略はありますか?

ヌルチェックによって毎日大量のレコードが作成されるために、テーブルが獣になることなく、毎日正しいデータをレポートしていることを確信したいと思います。

あなたが提供できるあらゆる助けをありがとう。

4
IronicMuffin

日付が連続しているかどうかの確認

ここでどのDBMSを使用しているかは言いませんが、SSASを使用しているので、SQL Serverを推測しています。最近十分なバージョンを使用している場合、ウィンドウ関数でLAGLEADを使用すると、この種のタスクに非常に便利です。開始日またはインクリメンタルID(ある場合)で行を並べ替え、それらを使用して次または前の行の値を確認できます。

したがって、たとえば、ビジネスキー/サロゲート永続キーでパーティション分割されたウィンドウ関数を設定し(以降、永続キーという用語を使用します)、開始日(昇順)で並べ替えることができます。次に、LEADを使用して、次の行の開始日が現在の行の終了日+ 1と等しいことを確認できます。 WHERE句でウィンドウ関数を使用することはできないので、同じ顧客(つまり、同じ永続キーを持つ)の行にフラグを立てるcaseステートメントを作成できますが、次の行はStartDateがこの行のEndDate + 1と等しくありません。同じことを逆に行って、次の行にフラグを立てることもできます。外部クエリは、調査が必要な行のみを選択できます。

SCDの確認が正しく機能している

ある程度は、実行できるチェックは特定の状況に依存しますが、私はあなたに役立つかもしれない一般的な観点からこれに取り組みます(まだ助けが必要な場合は、7か月後!)。同様の問題を抱えている他の人々を助けるかもしれません。戻ってきて、より具体的な詳細を提供した場合は、私に知らせてください。できれば、一読して回答を改善させていただきます。

1つのオプションは、ディメンションのさまざまな側面でいくつかのCOUNT値を選択するクエリを実行することです。したがって、たとえば、永続キーでグループ化し、その永続キーに存在する行数のカウントを取得できます。妥当な変更の数がわからない場合は、平均数を取得して、その平均を超える(または、一定の割合または設定された量だけその平均を超える)顧客を探すことができます。

そこから、疑わしいと思われる少数の顧客のデータを調べてみると、さらなる調査に値する明らかな問題が判明する可能性があります。詳細がなければ、どのような問題が発生しているのかわかりませんが、例として、2つの値の間で値が前後に変化する何百もの行がある顧客に気づいたとします。そこから、いくつかのクエリを作成して、テーブルの残りの部分でその問題を探すことができます。たとえば、各顧客の行数とunique各顧客の行(実際の属性列のみを表示するため、日付やその他のメタデータ列は表示されません)。

顧客が時間の経過とともに正しく変化しているかどうかを確認することは、ソースまたはステージング領域で保持している履歴データに依存します。これらの場所のいずれかまたは両方に履歴データがある場合、日付(直接、履歴データに日付が含まれている場合)によって、またはおそらくこれらの変更が発生した順序によって、値をディメンション行と比較できる場合があります。


少し正接しますが、言及する価値があります。このディメンションが正しく動作しているかどうかが、他の開発者から継承した可能性があるものであるかどうかはわかりません。この寸法のサイズが本当に心配で、現在の設計の完全な理由がわからない場合は、すべてのタイプII SCDフィールドが本当にタイプII SCDである必要があるかどうかを確認することをお勧めします。

一部のデータウェアハウス開発者は、デフォルトでSCD IIを想定する傾向があります これは本当に問題になる可能性があります 。スペースの問題は別として、リンクが進むにつれて、SCD IIの使用は、データを消費する人々に予期しない結果をもたらす可能性があります。これはあなたの場合には関係ないかもしれません(SCD II属性はよく考えられており、ユーザーの要件に適しているかもしれません)が、もしそれが関係しているなら、次元のサイズに関するあなたの懸念を軽減することが可能かもしれません。これらのデータ品質チェックを実行する必要がなくなります。

4
Jo Douglass