ここでは、できることのアイデアを示す例を示します。理想的には、SSISパッケージまたは任意のETLジョブでは、データが正確であるとは限りません。間違ったデータや無効なデータを処理するには、適切な手順を実行する必要があります。そのため、SSISはデータフロータスク内でデータをクリーンアップするために使用できる多くの変換タスクを提供しています。
場合によっては、Derived Column
変換またはData conversion
変換を使用して要件を満たすことができます。
この例はSSIS 2008 R2
で作成されました。日付を含むフラットファイルを読み込んでSQLテーブルにロードする方法を示します。
私は、フラット・ファイル・データをインポートするために、単純なSQLテーブルを作成しました。 SSISパッケージの
、私は、フラットファイルのためのSQLと1に接続マネージャを持っています。フラットファイル接続は以下のように構成されています。 SSISパッケージの
、私は制御フロー]タブの[データフロータスクを置きました。内部では、データフロータスク、フラットファイルソース、派生カラム変換、およびOLE DB宛先があります。フラットファイルのソースとOLE DBの宛先は単純なので、ここではそれらをそのまま残しておきます。Derived変換では、式(DT_DBDATE)SmallDate
を持つ新しい列が作成されます。データ変換変換を使用して同じことを行うこともできます。この新しい列SmallDateTimeValueは、OLE DB Destinationのデータベース列にマップする必要があります。
あなたがこのパッケージを実行すると、ファイル内ではないすべての値が有効であるので、それは失敗します。
無効なデータを直接テーブルに挿入されているので、それはあなたのケースで失敗した理由があります。あなたのケースでは、テーブルはパッケージを失敗させる例外をスローします。この例では、エラーが発生した場合、派生列変換のデフォルト設定でコンポーネントが失敗するため、パッケージは失敗します。そこで、エラー行をリダイレクトするためのダミー変換を配置しましょう。この目的のためにマルチキャスト変換を行います。それは本当に何もしません。理想的には、エラーの原因となるデータを分析できるように、エラー行をOLE DB宛先または他の目的地コンポーネントを使用して別のテーブルにリダイレクトするのが理想的です。
派生変換から赤い矢印をドラッグし、マルチキャスト変換に接続します。 「エラー出力の構成」ダイアログがポップアップ表示されます。エラーと切り捨ての列の値をから無効な構成要素〜Redirect row
に変更します。これにより、エラー行がマルチキャスト変換にリダイレクトされ、テーブルに入ることはありません。今
我々はパッケージを実行する場合は、それが正常に実行されます。各方向に表示される行数に注意してください。ここで
テーブルに入ったデータがあります。有効な行は2行だけでした。ファイル内のデータを示す最初のスクリーンショットを見ることができ、2行だけが有効であることがわかります。
希望は、あなたの要件をSSISパッケージに実装することを提案します。
スクリーンショットは素晴らしいです、+1 – eddiegroves