前回の「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パッケージの実行のさせ方を見ていきます。

 

前回の「SSISの作成:入門編②」で接続マネージャーを作ったので、その続きで今回は制御フローにタスクを加えていきます。

 

毎回でだしは同じですが、まずVisual Studio 2013を起動させ (SQL 2012をお使いの方はSQL Server Data Toolsを、2008年版をお使いの方はBusiness Intelligence Development Studioを起動)、メニューから

 

ファイル | 開く | プロジェクト/ソリューション

 

「プロジェクトを開く」と言う画面が開くので、前回のブログで作ったTestSolutionのフォルダーを開き、TestSolution.slhをダブルクリックします。

既に売上予測.dtsxが開いていればそのままで、開いてなければ売上予測.dtsxをダブルクリックして下さい

左側に下の様なSSISツールボックスがあります。SQL2008年版の頃は全てのタスクがカテゴリー別に分けられていましたが、SQL2012年版からは使う頻度が高い「SQL 実行タスク」と「データフロータスク」の2つが一番上に来るようになりました。

 

 

あまりに数が多く圧倒されそうですが、実際に使うものはそれほど多くありません。一番上にある、SQL実行タスクとデータフロータスクの2つが自由に使えるようになればSSISの仕事のほとんどはこなせるようになるはずです。

という訳でさっそくSSISツールボックスから制御フローウィンドウにデータフロータスクをドラッグ&ドロップしましょう。

 

 

データフロータスクを右クリックして名前を変更を選び「売上予測」と変えましょう。

今回とりあえずここまでにして、次のセクションでデータフローの中のさらに細かなステップを作っていきます。

保存することを忘れずに。

前回のSSISの作成:入門編①の続きです。

SSISが便利な理由な一つに様々なデータソースが利用できるという事があります。単に同じサーバー内の1つのデータベースから別のデータベースにデータを動かすのであれば簡単にSQLステートメントを使う事もできます。しかし、データソースや変換先が例えばExcel,csvファイル、Oracle、またリンクできない別のSQLサーバーの場合などはSSISパッケージが力を発揮します。

 

という訳で今回は接続マネージャーについておさらいしたいと思います。

お決まりですが、まずVisual Studio 2013を起動させ (SQL 2012をお使いの方はSQL Server Data Toolsを、2008年版をお使いの方はBusiness Intelligence Development Studioを起動)、メニューから

 

ファイル | 開く | プロジェクト/ソリューション

 

「プロジェクトを開く」と言う画面が開くので、前回のブログで作ったTestSolutionのフォルダーを開き、TestSolution.slhをダブルクリックします。

 

前回作った売上予測.dtsxというSSISパッケージを使います。まだそのSSISパッケージが開いていなければ、右上のソリューションエクスプローラーの中で売上予測.dtsxをダブルクリックして下さい。

 

ここでデザインウィンドウの真ん中の下のほうに接続マネージャーが見えます。ここにAdventureWorksとExcelファイルへのコネクションを加えます。

 

ここでも幾つかの方法がありますが、ここでは接続マネージャーの中で右クリックし、新しい接続を選択すると、下の画面が出てきます。下にスクロールして、OLDB OLDB DB接続のマネージャーを選んで追加をクリック

ここでOLDBの接続を加える画面が現れ、今までに加えたOLDB接続が左にあります。ここから選んでも良いのですが、練習も兼ねて今回は「新規作成」をクリックしましょう。

新規作成をクリックすると下の画面が出てきます。サーバー名をタイプしてAdventureWorksのデータベースを選びOKをクリックして上の画面に戻るのでまたOKをクリック

 

 

これでAdventureWorksへの接続マネージャーが出来ました。つぎにExcelファイルへの接続マネージャーを加えます。まず空のExcelファイルを作り売上予測を名づけて、下の様にA1に「BusinessEntityID」、B1に「Name」、C1に「SalesPersonID」、そしてD1に「Forecast」と列に名前を附けて保存しましょう。

その後、先程と同じように接続マネージャーの中を右クリックして今度はEXCEL(Excelファイルの接続マネージャー)を選択。 そのファイルへのパスを指定しましょう。


OKをクリックすればExcelファイルへの接続マネージャーも完成です。下の様に新たな2つの接続マネージャーが加えられたのが確認できます。

 

保存するのを忘れずに。

次のセクションでは、制御フローでの作業に移ります。

http://ameblo.jp/ssisconsultant/entry-12236810702.html

このセクションでは、ゼロからSSDTを使ってSSISパッケージを作ってみます。例として、州と市ごとに売上の予測を入力するフォームを作ります。州と市のデータはAdventureWorksデータベースから抽出し、変換先はExcelファイルです。Excelフォームが出来たあと、売上予測の額を入力し、そのデータを今度はまたAdventureWorksのデータベースに送り返します。

大まかに分けて次のステップをカバーします。

 

  • 新たなSSISパッケージを作成とそのプロパティの説明
  • 変換元と変換先の接続マネージャーを加え方
  • 制御フローでタスクを加え方
  • データフローでタスクを加え方
  • SSISパッケージをSSDT内で実行の方法

 

新たなSSISパッケージを作成とそのプロパティの説明

 

まずVisual Studio 2013を起動させ (SQL 2012を使ってる方はSQL Server Data Toolsを、2008年版をお使いの方はBusiness Intelligence Development Studioを起動)、メニューから

 

ファイル | 開く | プロジェクト/ソリューション

 

「プロジェクトを開く」と言う画面が開くので、前回のブログで作ったTestSolutionのフォルダーを開き、TestSolution.slhをダブルクリックします。

TestSolutionが開いたら、右上のソリューションエクスプローラーの中のTestProjectの「SSIS パッケージ」を右クリックし、「新しいSSISパッケージ」を選びます。すると新しいパッケージが「Package1.dtsx」などと言う名前で追加されます。

 

Package1.dtsxを右クリックし名前の変更を選び売上予測.dtsxという名前に変更します。現在のところ、デザインウィンドウには何もありません。

 

 

ここでこのSSISパッケージのプロパティを見てみることにします。

 

 

数が多いため全てのプロパティを説明する訳にはいきませんので、自分の独断で特に重要だと思う2つを選んで説明したいと思います。

  • ProtectionLevel
  • TransactionOption

 

ProtectionLevelは何もしないとEncryptSensitiveWithUserKeyになっていますが、後でカバーする接続マネージャーにsaパスワードなどを使うとその他のユーザーがそのSSISパッケージを実行しようとすると失敗になります。それを避けるためにもDontSaveSensitiveを選ぶことをお勧めします。

 

TransactionOptionは、もしあるステップが失敗した時にそのステップ前の状態に戻すかどうかの選択が出来るオプションです。SQLを使うときのROLLBACK TRANSACTIONと同じと考えていいと思います。例えば、シーケンスコンテインナーで幾つかのタスクをまとめることが出来ますが、その時、シーケンスコンテイナー自体のTransactionOptionはRequiredにして、その中のタスクはSupportedにすれば、その中のタスクの1つでも失敗すれば、全てのトランザクションが元に戻ります。これは必要な時もあるので覚えておくと便利です。

 

保存するのを忘れずに、この後は「SSISの作成:入門編②」で続きます。

http://ameblo.jp/ssisconsultant/entry-12236692678.html

今回のブログでは、データのエクスポートの回で作ったSSISパッケージをもう少し詳しく調べてSSDTの使い方を勉強していきましょう。

 

まずVisual Studio 2013を起動させ (SQL 2012をお使いの方はSQL Server Data Toolsを、2008年版をお使いの方はBusiness Intelligence Development Studioを起動)、メニューから

 

ファイル | 開く | プロジェクト/ソリューション

 

「プロジェクトを開く」と言う画面が開くので、前回のブログで作ったTestSolutionのフォルダーを開き、TestSolution.slhをダブルクリックします。

TestSolutionが開いたら、右上のソリューションエクスプローラーの中の「SSIS パッケージ」を右クリックし、「既存のパッケージを追加」を選びます。

 

データのエクスポートのブログで作ったSSISパッケージを保存したフォルダーまで行き、SSISパッケージを選び、OKをクリック

 

 

もう一度ソリューションエクスプローラーを見ると「データエクスポートのテスト」というSSISパッケージが追加されているのが確認できます。

 

 

追加したSSISパッケージをダブルクリックすると、下の様なSSISの中の構造が見えます。

 

デフォルトで見えるSSISの構成画面として大まかに分けて以下の4つがあります。

  • デザインウィンドウ
  • 接続マネージャー
  • ツールボックス
  • プロパティウィンドウ

まずはデザインウィンドウを見ていきましょう。デザインウィンドウとは、SSDTの画面の真ん中に位置する下の画面の部分です。

 

デザイナーウィンドウには4つのタブがあります。

 

  • 制御フロー: このタブではSSISパッケージに含まれるタスクとその流れが示されています。言い換えればSSISパッケージの大まかな流れが示されています。
  • データフロー: このタブでは、制御フロータブにあるタスクの更に細かいステップとその流れ・順序が示されています。例えば、制御フローでは1つのタスクがデータフローではデータソースからのデータの抽出、そしてデータの変換、さらにそのデータを送り先に送るステップと言った具合に3つほどに分かれていることがよくあります。
  • パラメーター: このタブではSSISパッケージレベルのパラメーターを作ったり、削除したり、編集することが出来ます。注意なのは、ここで作るパラメーターはパッケージレベルであり、プロジェクトレベルのパラメーターはソリューションエクスプローラーで作ります。
  • イベントハンドラー: このタブは何かが起こったとき(例えばあるステップでエラーがあった時)等にタスクが起動できるように出来るタブです。と言うものの、正直に言って僕はこのタブを使うことはほとんどありません。
  • パッケージエクスプローラー: このタブでは、SSISパッケージの全体をツリー的に確認することが出来ます。

 

ここでは、まず「データフロータスク1」をダブルクリックしましょう、すると自動的にデータフローのタブに移動します(もとに戻りたければまた制御フローをクリックしてください)。ここでは、データフロータスク1がさらに3つの細かなステップに分かれていたのが示されています。

 

接続マネージャー

次に中央部分の下部にある接続マネージャーがあります。ここではデータソースである、AdventureWorksと変換先であるExcelファイルの二つが作られています。

 

 

SSIS ツールボックス

左側にあるのがSSISツールボックスで、制御フローやデータフローをデザインする時に使えるタスクのリストになっています。必要なタスクをクリックして、制御フローやデータフローウィンドウにドラッグ&ドロップできます。

 

 

プロパティ

画面の右下にはプロパティウィンドウがあります。このプロパティでは、各ステップや接続マネジャー等の詳細な情報を確認あるいは変更する事ができます。

 

今回はここまでにして、次のセクションでは今までに身に付けたことを使いゼロからSSISパッケージを作ってみましょう。

http://ameblo.jp/ssisconsultant/entry-12236492193.html