Share via


SQL Server Integration Services ( SSIS ) の使い方

この記事は、2016 年 9 月 28 日 に Data Platform Tech Sales Team Blog にて公開された内容です。

 

Microsoft Japan Data Platform Tech Sales Team

坂本 禎尚

今回は SQL Server Integration Services 、通称 SSIS の使い方をご紹介します。

SSIS とは SQL Server が持つ ETL ツールです。

  • Extract - データ ソースからの情報の抽出・取り込み
  • Transform - 抽出したデータの変換や加工
  • Load - 変換や加工が完了したデータのロード

ETL という言葉は以前はデータウェアハウスを構築・維持をしていくうえでの工程を表した用語でしたが、最近ではそもそもデータベースに限定することなく様々なデータ ソース間のデータ連携手段として用いられることが多くなってきています。

SSIS の前身は SQL Server 2000 まで提供されていた DTS という COM ベースのコンポーネントでしたが、SQL Server 2005 で今日の SSIS という .NET ベースのものに生まれ変わり、かつこのタイミングで DTS では弱かった開発生産性や運用性に関する部分が大幅に強化されました。

SSIS における開発

開発は SQL Server Data Tools と呼ばれる Visual Studio ベースの統合開発環境*を使って行います。 image

* SSIS の開発をする為に Visual Studio のライセンスが必要になることはありません。開発上のシェル(外観)として Visual Stuido を利用しています。

SSIS のツールボックスに ETL 処理に必要となるであろう処理があらかじめタスクという部品として準備されています。

このタスクを制御フロー、あるいはデータ フローにドラッグ&ドロップし、そのタスクのプロパティを設定して、処理の流れに応じてタスク間を線で繋げていくとパッケージと呼ばれるバッチ処理プログラムが生成されるというのが開発の流れです。 image

多くのシステムのバッチ処理といわれている処理は、取得したデータに対して何らかの処理を施し、その結果をどこかに永続化するものがほとんどです。よって、これらの処理は少なからず SSIS で代替できる可能性があります。

SSIS を使って頂くことの最大のメリットは、何といってもその開発生産性にあります。上記のような形で、開発をしていくので基本的にコードを書く必要がありません。

どんなツールでもそうであるように最初にツールの使い方に慣れて頂く必要はありますが、コードで書くと十数行必要な処理が、SSIS だと 2 つのタスクをドラッグ&ドロップして、線で繋いで、プロパティ設定して終わってしまいます。

開発や保守のメンバーが代わる際の引継ぎも容易だし、わかりやすい GUI なので仕様書の作成工数をかなり削減できたというようなお言葉をお客様から頂戴することもしばしばあります。

 

SSIS パッケージの定期実行

このようにして作ったパッケージ(要はプログラム)のテスト(テストは SQL Server Data Tools の中で実施できます)が終わり、例えば日次や週次、月次のように定期的に稼働させる処理とする場合、以下のような選択肢があります。

  • dtexec コマンド
    • SSIS のパッケージは dtexec コマンドから実行できます。3rd Party のジョブ管理ツールなどから実行する際には、この方法がよく取られます。image
  • SQL Server エージェント ジョブ
    • SQL Server が持つジョブ管理機能を使って、定期実行する場合に使用します。
    • image

 

クラウド、ビッグデータ連携

SQL Server 2005 で登場した SSIS もバージョンアップを経るごとに、数々の新機能が追加されてきていますが、最近の特徴的なポイントは、やはり弊社パブリック クラウドの Azure との連携やビッグデータ処理基盤の Hadoop との連携です。

下記はその一例ですが、インターネットで公開されている SQL Server の Feature Pack から Integration Services Feature Pack for Azure* をダウンロードしてインストールします。

* SQL Server 2012 以降でかつ英語版のみの提供ですが、日本語の SSIS 環境でも使用可能です。

これを使うと、SSIS のパッケージ内で Azure の HDInsight サービスの Hadoop クラスタを作って処理をさせた後でクラスタを削除し、処理結果を Blob ストレージからダウンロードするというような処理を実行することも可能になります。

image

 

最後に

SSIS は、今後益々単なるオンプレミスの ETL ツールとしてではなく、ハイブリッドクラウド環境下でデータ連携を制御・統合する基盤としての役割を担ってゆきます。

そんな SSIS をちょっと試してみたいと思った方は、下記の自習書をご活用下さい。