0

差し迫った問題を解決するためのアイデアを募るために書いています。

当社の ETL プロセスにデータを提供する製品には、現在複数のバージョンがあります。私たちのクライアントはすべて製品のいくつかのバージョンを使用していますが、すべてが同じバージョンを使用しているわけではなく、すべてが同時にアップグレードされるわけではありません。

製品の新しいバージョンが公開されると、最も一般的な変更は新しいデータ列を追加することです。列の削除や名前の変更は時折発生する可能性がありますが、現在の主な焦点は、追加された新しい列を処理する方法です。

対処したい問題は、古いバージョンの製品を使用しているクライアントのデータをどのように処理するかです。SSIS パッケージの新しい列を考慮しない場合、古い製品バージョンを使用しているクライアントのそれらの列のデータは処理されません。

私たちが避けたいのは、製品のバージョンごとに個別のバージョンの SSIS パッケージを維持しなければならないことです。この状況の解決策をうまく実装した人はいますか?

4

2 に答える 2

1

まあ、私は、すべて同じ場所に行かなければならなかったさまざまなベンダーからさまざまな形式のさまざまなファイルを取得した場合、同様のことをしなければなりませんでした。私が行ったことは、ファイルを実行する For Each ループ コンテナーを作成することでした。ループの最初のステップで、どのパスがダウンするかが決定されます。次に、パスごとに個別のデータ フローを作成しました。

バージョンごとに予想される列をリストし、一致するバージョンのパスに送信するテーブルを使用してこれを行うことができます。

または、各顧客のバージョンがわかっている場合は、それを格納するテーブルを作成し、customerid からパスを特定できます。

または、1 つの SSIS パッケージに 20 の異なるパスが含まれないようにするために、バージョンごとに新しいパッケージを作成することもできます (名前にバージョンを含めます)。次に、呼び出し元の SSIS パッケージに for each ループを配置し、ファイルを正しいバージョンに送信します。または、クライアントが使用している ppackage のバージョンを把握して、クライアントごとに異なるジョブを設定するだけです。次に、新しいバージョンにアップグレードするときにジョブが呼び出す ssis パッケージを変更するだけです。

于 2010-04-02T15:00:48.927 に答える
0

考えられるすべてのバージョンのメタデータを維持する必要がないようにしようとしているようです。@HLGEM の解決策は優れていますが、バージョンのすべての可能な組み合わせのメタデータを維持する必要があります。

私は定期的に別のクライアント バージョンをプッシュし、新しいバージョンには余分な列がある傾向があり、ユーザーに最新バージョンへのアップグレードを強制できないという同様の状況がありました。生データがデータベース テーブルからのものであるデータ ソースの場合、ユーザーのバージョンに関係なく、常にすべての列を取得します。バージョン間でスキーマが異なるインポートするフラット ファイルについては、次の 3 つの個別のソリューションを使用しました。

  1. 条件付き分割: バリエーションがほとんどない場合にうまく機能する最も明白なソリューションであり、行のいくつかのプロパティに基づいて違いを検出する簡単な方法です。これは、複雑な変更を管理するために適切に拡張することはできません。これは、式を記述して維持することが難しくなりすぎるためです。

  2. スクリプト変換: 各行を 1 つの文字列として読み取る場合、スクリプト タスクを使用して、追加の列を書き出す必要があるかどうかを判断できます。これは、フィールドの組み合わせに非常に多くの異なる組み合わせがあり、使用するパスを決定するためのルールが非常に複雑な場合にうまく機能します。

  3. テーブル駆動のメタデータ: XML ファイルをインポートするまれなケースとして、バージョン番号を含むコントロール テーブルを作成しました。基本的に、XML をテーブルの XML データ型にロードしてから、ストアド プロシージャで XML を処理しました。その後、パッケージは各バージョン番号を繰り返し処理し、テーブルから必要な SQL を動的に生成して XML から正しいノードを抽出し、元の行に処理済みのフラグを立てました。これは私のプロセスにとっては良い解決策でしたが、このアプローチの主な課題は、コントロール テーブルに新しい行を追加するタイミングを知ることでした。私は基本的に、開発グループの SDLC フォームにチェック ボックスを付けて、メジャー バージョンの変更に伴う新しいスキーマの変更を受け取ったことを承認してもらう必要がありました。

これらのいずれかが役立つかどうかはわかりませんが、そこから何か役立つものを抽出できることを願っています. 幸運を。

于 2010-04-02T15:23:09.927 に答える