1

私は SSIS パッケージに取り組んでおり、更新機能 (ステージング テーブルを使用して行を更新する) を追加しています。これを行うには、ルックアップと条件付き分割を使用して、すべての列を比較します。

ここに画像の説明を入力

何らかの理由で、一部のデータは誤検知をスローし、行が変更されていないのに変更済みとしてマークされます。これを単一の文字列列 (郵便番号) に分離しました。

列はルックアップから直接取得されます。ソース データ列はvarchar(9)、宛先 (つまり、2 番目の値のソース) はchar(9)です。SSIS では、両方の列がDT_STR,9,1252

ここに画像の説明を入力

空のテーブルから始めて、パッケージを 2 回実行すると、2 回目は行の約 20% が変更されていないにもかかわらず、変更されたものとして表示されます。次の SQL は、既存の行をステージング テーブルの「更新された」行に結合し、それらの zip を比較します。

SELECT a.key_DestinationZip, b.key_DestinationZip,
CASE WHEN a.key_DestinationZip = b.key_DestinationZip then 1 else 0 end
FROM [dbo].[sta_Sales] as a
join [dbo].[fact_Sales] as b
on a.key_FullSalesNumber = b.key_FullSalesNumber

と同様の結果が得られます

78735       78735       1
38138       38138       1
4

2 に答える 2

1

ソース データは varchar(9) で、ルックアップ データは char(9) です。私は信じていますが、テストしていません。これにより、データに|65401|and |65401 |(そこに 4 つのスペースと線引き用のパイプのみ) が生成されます。

ソース システムからのデータは、ANSI_PADDINGロードされたときの設定の影響を受けます。既定では、SSIS は文字列を埋めません。

したがって、ルックアップでは、ソース データを 9 文字にパディングするか、ルックアップのキーをトリムする必要があります。

これとは関係ありませんが、郵便番号を zip+4 データとは別に保存したい場合があります。アドレス検証サービスを介してデータを実行した場合、後者は前者よりも変更される可能性が高くなります。

于 2013-10-01T20:17:33.943 に答える
0

問題は、データに2つの郵便番号があることです。

于 2013-10-01T19:55:44.970 に答える