0

条件付き分割を使用してデータを検証し、パッケージ内の代替パスに不良データを送信しています。私の条件付き分割コードは次のようになります。

(Gender!= "M" || Gender!= "F" || Gender!= "U")== FALSE(Gender == "M" || Gender == "F" || Gender == "U" )== TRUE

値がtrueの場合、制御を別の条件付き分割に渡します。falseの場合、その行をエラーテーブルにリダイレクトします。

1つのパッケージで25の条件付き分割を使用していますが、これがパフォーマンスの観点から良いことかどうかを知りたいです。データを検証するために別の方法を使用するのとは対照的に、条件付き分割を使用する場合のパフォーマンスはどうですか?

別のシナリオを追加しましたが、条件付き分割では機能しません。以下の情報をご覧ください

この形式とこの期間「01/01/1753」から「12/31/9000」までの日付値のみを許可しました

私の状態

(Dob Varchar(10))

SUBSTRING(Dob、1,2)<= "12" && SUBSTRING(Dob、4,2)<= "31" &&(SUBSTRING(Dob、7,4)> = "1753" || SUBSTRING(Dob、7、 4)<= "9000")== TRUE

SUBSTRING(Dob、1,2)> "12" || SUBSTRING(Dob、4,2)> "31" || SUBSTRING(Dob、7,4)<"1753" || SUBSTRING(Dob、7,4)> "9000" == FALSE

私の入力-12/32/1990、13 / 15 / 2000、12 / 31 / 2010、01 / 01 / 1753、12 / 31 / 9000、12 / 31 / 9001、01 / 01/9001期待される出力-12/31 / 2010,01 / 01 / 1753,12 / 31/9000

しかし、私の条件では、すべてのレコードが偽と見なされました。このシナリオの解決策を教えてください。

4

2 に答える 2

3

これを判断する最良の方法は、同じパッケージを2回作成することです。1回はこの方法で検証し、もう1回は別の方法で検証します。BIDSとBIDSHelperを使用して、パッケージを右クリックし、コンテキストメニューから[実行とパフォーマンスの視覚化]を選択することで、各パッケージを実行できます。これを行ったら、他の人があなたの仕事から利益を得ることができるように、結果を回答として投稿してください!

于 2012-12-17T14:16:42.253 に答える
3

William Todd Salzmanが指摘しているように、テストは、パッケージに最適なセットアップを決定する唯一の方法です。ただし、一般的に言えば、直感に反しているように見えるかもしれませんが、特定のコンポーネントで行う作業が少なければ少ないほど、SSISの速度は速くなります。この理由は、SSISエンジンが並列処理を決定する方法です。列Bが派生列1で操作されていないと判断できる場合は、派生列2でその値の変更を安全に開始できます。

あなたのシナリオを考えると、さまざまなブールチェックを定義する複数の派生列変換を作成することを検討します。たとえば、このような有効な性別があるかどうかを示す1つのフィールドを作成します。

名前の付いた派生列変換を追加し、DFT IsGenderValidこのように構成します

  • IsGenderValid
  • 「新しい列として追加」
  • 性別!= "M" || 性別!= "F" || 性別!= "U"
  • DT_BOOL

次に、ロジックをテスト、修正、および保守する場所が1つしかない場合は、ブール値で動作する条件付き分割変換を実行します。

ビジネスロジックが必要とする数の検証に対して、このパターンを繰り返します。

于 2012-12-17T15:16:47.667 に答える