LoginSignup
1
3

More than 5 years have passed since last update.

【SSIS】取り込みファイルに同一キー行が存在した場合、最初の行だけ取り出す!

Posted at

やりたいこと

下図のように、赤線のデータのみ取得したい。
ここで取り込みファイルのキー項目は氏名とする。
取り込みファイル内容.png

作成したパッケージ

全体図は下図のようになる。制御フローはデータフロータスクのみ。
全体図(データフロー).png

各グループの役割について説明

行番号設定

まず、取り込みファイルからどの行が何行目か分からないので、派生列、スクリプトコンポーネントより先頭から順に数字を設定する。
派生列設定.png

行番号割り振りスクリプト.png

ここまで実行するとデータビューアは以下のようになる。
行番号設定データビューア.png

同一キー(名前)で最小の行番号データのみ取得

ここからが本番。
ファイルの各行をキー(名前)でグループ化して行番号が最小の値を取得する。
それをファイルのグループ化前と行番号でくっつけて完成!

集計.png

マージ結合後のデータビューア
マージ結合後データビューア.png

余談)各並び替えタスクはマージ結合タスクで必要なので適当に設定してください!

まとめ

並び替えタスクで重複を排除できるようなチェックボックスがあったんですが、どの行を排除するまでは指定できなかったので、このような処理を書きました。

感想

また、この方法を知るまでは一時表を使ってSQLで書こうとしましたが、一時表とトランザクションの設定がうまくいかず、断念しました。。。難しい。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3