前回の「SSISの作成:入門編③」でデータフロータスクを作ったので、その続きで今回はデータフロー内により細かなステップをを加えていきます。
Visual Studioを閉じた場合は、まずVisual Studio 2013を起動させ (SQL 2012をお使いの方はSQL Server Data Toolsを、2008年版をお使いの方はBusiness Intelligence Development Studioを起動)、メニューから
ファイル | 開く | プロジェクト/ソリューション
「プロジェクトを開く」と言う画面が開くので、前回のブログで作ったTestSolutionのフォルダーを開き、TestSolution.slhをダブルクリックします。
既に売上予測.dtsxが開いていればそのままで、開いてなければ売上予測.dtsxをダブルクリックして下さい。
上図の様に前回ドラッグ&ドロップしたデータフロータスクをダブルクリックしましょう。
下図の様にデータフローウィンドウに移動します。まだ何もしていないので当然何のタスクもありません。
ここで左側のSSISツールボックスをチェックすると制御フローであったツールボックスとは違うことに気づきます。
たくさんのタスクがありますが、今回必要なのはデータをAdventureWorksのデータベースから読み取りそれをExcelファイルに送り込むのと、さらにそのExcelファイルに売上予測を入力する為の列も1つ作る必要があります。変換元アシスタントをデータフローのウィンドウにドラッグ&ドロップすると下の様な新たな画面が現れます
右側に既に作った接続マネージャーがあるはずなのでそれを選択してOKをクリック.
その後、変換先アシスタントをドラッグ&ドロップして、現れる画面の左側でExcelを選び右側で前回加えたExcel接続マネージャーを選択してOKをクリック
現在、データフローは下の様になっているはずです。
ここでOLE DBソースから出ている緑の矢印を次の派生列まで伸ばしましょう。その後に歯整列からExcel 変換先にも緑の矢印を延ばしてください。すると下図の様になるはずです。
緑の矢印でタスクをつなげるという事は、元のタスクが成功したときにそのパスを通るという事です。逆に赤の矢印でつなげると元のタスクが失敗した時にそのパスを通るという事になります。ここではそこまでしませんが、タスクが失敗したときにはDBAにメールを送るなどという事も出来ます。
ここで「OLE DBソース」をダブルクリックすると下の様な画面が現れます。ここから直接テーブルやビューをしてする事もできますが、自分はSELECTステートメントを使うことの方が圧倒的に多いためここでもそうしします。
データアクセスモードで「SQLコマンド」を選び、以下のステートメントをコピペして下さい。
SELECT [BusinessEntityID]
,[Name]
,[SalesPersonID]
FROM [Sales].[Store]
その後、「プレビュー」をクリックすると下の様にSELECTステートメントから得られるデータが見ることが出来ます。
閉じるをクリックして今度は左側で「列」をクリックしましょう。すると、右側でこのタスクから送られる全てのデータの列をチェックする事ができます。 外部列と出力列で名前が同じですが、出力列に関しては名前を変えることは可能です。
次に、画面の左側で「エラー出力」を選択しましょう。
すると右側に各データフィールドでエラーが起こったときにどの様に対応するかが選択できます。デフォルトは「エラーコンポーネント」ですが、それ以外にも「エラーを無視する」と「行をダイレクトする」も選択できます。このタスクでエラーが出来ることはあまりないため、ここではデフォルトのエラーコンポーネントのままにしておきます。
OKをクリックして、次にタスクである派生列をダブルクリックしましょう。このタスクは変換元のテーブルにはなかった列を加える為のものです。
新たに加える列をForecastと名づけて派生列はデフォルトの「新しい列として追加」のままで、式はとりあえず0にしておきましょう。
OKをクリックして、次にExcel 変換先をダブルクリックしましょう。
下の様な画面が現れるので、ここでExcelのどのワークシートにデータを送り込むか選択します。自分の場合はSheet1を選びます。
ここで左側でマッピングを選ぶと、変換元と変換先でのデータのマッピングを確認することが出来ます。この場ありは両方でデータの名前が同じでしたので自動的にマッピングがされていましたが、名前が違う列をマッピングするには手動でマッピングする必要があります。
OKをクリックすると、始めにあった赤の斑点は消えているのが分ります。保存するのを忘れずに。次のセクションでは今完成させたSSISパッケージの実行のさせ方を見ていきます。