2016-04-22 16 views
0

私は奇妙な動作をするSSISルックアップを持っています。ほとんどの場合、データは正常に一致しますが、多くの場合、データビューアで一致したデータが表示されても一致しません。実際には奇妙なことは、ルックアップ接続がwhere句なしのSQLクエリを使用することです。 SQLクエリを変更して、一致していない行に似た行だけを返すwhere節を追加して再実行すると、データが一致します。例えばSSISルックアップの動作が奇数です

SQLクエリがある場合:

Select ColumnA, ColumnB 
From TableA 

ColumnAは、私が上の一致を探しています一つであり、ColumnBは、私がデータフローに追加したいものです。

クエリは、この

AA, B 

AC, D 

BE, F 

BG, H 

ような結果(それは問題ではありませんので、すべてのデータはすべて大文字である)と一致するように

私の入力欄がACですが、一致するものが返されません(それを提供AAとBGの一致を返します)。しかし、次のようなwhere節を含めるようにクエリを変更した場合:ColumnAが 'A%'(2行のみ返す)のような

のように一致する場合は、 となります。 誰もこれまでにこのようなことを見たことがありますか?

+0

同じ値の列または値を含む列を一致させようとしていますか?両方のテーブルの明瞭なサンプルを追加してください –

+0

サンプルを作成できません。独自データと個人データが含まれています。私が与えた例は、この問題を示しています。ソースの列はACで、ACを提供するクエリの列と一致する必要があります。あなたがこれまでにこのようなことを見たことがないなら、おそらく答えはありません。 – Thursty

+1

'SELECT RTRIM(ColumnA)AS ColumnA、ColumnB'また、SourceAにRTRIMが適用されていることを確認してください。 – billinkc

答えて

2

あなたの例があまりにも単純すぎると思われます。

SSISルックアップを使用すると、データベースの比較との違いを理解する必要があります。

フルキャッシュモードでのSSISルックアップは、メモリ内で排他的に行われます。これは、SSISコンポーネント内でデータベースの照合に注意を払わずに比較が行われることを意味します。したがって、あなたは元の投稿にあなたが言及した大文字の問題を簡単に持っています。

  • 強調文字

    • 先頭または末尾のスペースまたは照合
    • 異なるデータ型によって影響を受けることmiht何か他のもの:

      は微妙な違いがあるかもしれません。たとえば、数値データ型のルックアップを行う場合、まったく同じデータ型を持つ場合にのみ一致します。 (24.00は24.0と一致しません)...

    解決策は上記のいずれかです。

  • 0

    先行/後続スペースを削除して完全一致を強制することに関するすべての提案が既に試されているとコメントしたいと思いますが、答えが見つかりました。

    私が見つけたのは、関連のない関数呼び出しが特定のデータで失敗してクエリを停止するが、ルックアップでは自動的に失敗し、パッケージは引き続き実行されるということでした。私は、パッケージの失敗を引き起こさないクエリの失敗を見たことがないが、この場合に起こった。だから、一致するはずのデータがルックアップキャッシュに追加されず、一致するデータが見つからない場合があります。類似の行のみを返すwhere節を使用してクエリを制限すると、エラーは発生せず、データも一致します。だからこそ、その行動はとても奇妙なようでした。クエリが失敗したときにパッケージが失敗しない理由はわかりません。私は、パッケージがクエリを停止してパッケージを続行するのではなく、クエリに関するエラーで失敗したはずです。

    関連する問題