0

データ ストリーム B がデータ ストリーム A に依存しているシナリオがありました。データ ストリーム A に変更があった場合は常に、ストリーム B を再処理する必要があります。処理タスク。トリガー以外にこれを行う良い方法はありますか。

4

1 に答える 1

0

あなたの質問はかなり不明確です。答えは、データがどのように見えるか、どのようにロードするか、変更をどのように識別するか、1 つのファクトまたはディメンション値の複数のバージョンをユーザーに表示する必要があるかどうかなどに大きく依存すると思います。

これは、私たちがそれをどのように処理するかについての簡単な説明です。

  1. 生データを毎日段階的にロードします。つまり、ソース システムで過去 24 時間に生成されたすべてのデータをロードします (タイミングの問題について詳しく説明していますが、ここでは重要ではありません)。
  2. 生データをローディング テーブルに挿入します。そのテーブルには、同じソースから以前にロードしたすべてのデータが既に含まれています
  3. 行が完全に新しい場合 (つまり、生データの PK 値が新しい場合)、それらは正常に処理されます。
  4. テーブルに既に PK がある行が見つかった場合、それは既に処理されたデータの更新されたバージョンであることがわかります。
  5. 更新されたデータが見つかった場合は、特別な処理のためにフラグを立て、それに応じてデータを再生成します (これはすべてストアド プロシージャで行われます)。

ステップ 5 の実行方法を尋ねていると思いますが、それは、変更されるデータと、ユーザーが何を期待するかによって異なります。たとえば、注文の 1 つのアイテムが変更された場合、注文レベルの値が正しいことを確認するために、注文全体を再処理します。顧客の住所が変更された場合、新しい販売地域に再割り当てする必要があります。

データの変更を特定して処理する一般的な方法はありません。データと要件はそれぞれ異なり、ツールセットや制約もそれぞれ異なるためです。

質問をより具体的にすることができれば、おそらくより良い答えが得られるでしょう。たとえば、トリガーに基づいた実用的なソリューションが既にある場合、なぜ変更したいのですか? どのような問題があり、代替案を探す必要がありますか?

于 2012-05-23T14:21:21.613 に答える