SSISのデータフロー内でT-SQLコードを実行する方法はありますか?
-
10-07-2019 - |
質問
背景
毎日のレコードが1つあるディメンションテーブルがあります。各レコードには主キーがあるため、サンプルデータは次のようになります。
Dimension Table --------------- --------------------------------- | ID | DateTime | --------------------------------- | 1083 | 04/10/2008 10:02:00 PM | ---------------------------------
私がやろうとしているのは、SQL日時値( 04/10/2008 10:02:00 PM
など)を持つソースデータ列を取得し、SSISがプライマリを取得することですディメンションテーブルのキーは(上記の例では 1083
)でなければなりません。これをパッケージ内のデータフローに合わせて、ステージングテーブルの使用を避けようとしています。
データフロー中にデータベース関数を呼び出して、SSISパッケージが datetime
レコードの timeid
を検出するようにします。 DeriveColumn
を使用しようとしましたが、T-SQLを使用できないようです。むしろ、ANSI SQLに組み込まれている関数のみ。
質問
データフロー内でこれを行う別の方法はありますか?または、ステージングテーブルを使用し、データフローの外部で SQLTask
を使用してデータを操作する必要がありますか?
解決
理解できれば、時間ディメンションを持つデータマートがあり、特定の時間に対応するtimeIdを取得する必要があります。
それが正しい場合は、ルックアップコンポーネントを使用します。参照テーブルについては、 SELECT timeId、timeStamp FROM TimeDimension
などを使用し、タイムスタンプを保持する入力列を検索します。 timeIdを出力列として使用すると、データフローの各行に、タイムスタンプに対応するtimeIdが追加されます。
所属していません StackOverflow