データ ストリーム B がデータ ストリーム A に依存しているシナリオがありました。データ ストリーム A に変更があった場合は常に、ストリーム B を再処理する必要があります。処理タスク。トリガー以外にこれを行う良い方法はありますか。
1 に答える
0
あなたの質問はかなり不明確です。答えは、データがどのように見えるか、どのようにロードするか、変更をどのように識別するか、1 つのファクトまたはディメンション値の複数のバージョンをユーザーに表示する必要があるかどうかなどに大きく依存すると思います。
これは、私たちがそれをどのように処理するかについての簡単な説明です。
- 生データを毎日段階的にロードします。つまり、ソース システムで過去 24 時間に生成されたすべてのデータをロードします (タイミングの問題について詳しく説明していますが、ここでは重要ではありません)。
- 生データをローディング テーブルに挿入します。そのテーブルには、同じソースから以前にロードしたすべてのデータが既に含まれています
- 行が完全に新しい場合 (つまり、生データの PK 値が新しい場合)、それらは正常に処理されます。
- テーブルに既に PK がある行が見つかった場合、それは既に処理されたデータの更新されたバージョンであることがわかります。
- 更新されたデータが見つかった場合は、特別な処理のためにフラグを立て、それに応じてデータを再生成します (これはすべてストアド プロシージャで行われます)。
ステップ 5 の実行方法を尋ねていると思いますが、それは、変更されるデータと、ユーザーが何を期待するかによって異なります。たとえば、注文の 1 つのアイテムが変更された場合、注文レベルの値が正しいことを確認するために、注文全体を再処理します。顧客の住所が変更された場合、新しい販売地域に再割り当てする必要があります。
データの変更を特定して処理する一般的な方法はありません。データと要件はそれぞれ異なり、ツールセットや制約もそれぞれ異なるためです。
質問をより具体的にすることができれば、おそらくより良い答えが得られるでしょう。たとえば、トリガーに基づいた実用的なソリューションが既にある場合、なぜ変更したいのですか? どのような問題があり、代替案を探す必要がありますか?
于 2012-05-23T14:21:21.613 に答える