SlideShare a Scribd company logo
1 of 120
Download to read offline
BI を用いたログ管理(取込みから分析まで)
     ~SQL Server 2008 R2 編~
        Ver 1.0 - 2010年01月29日版


                        マ゗クロソフト株式会社
                           エバンジェリスト
                               安納 順一
                 http://blogs.technet.com/junichia/
                                                      1
本日の予定

13:30 – 17:15 メ゗ンセッション



17:15 - 18:00 ラ゗トニングトーク



18:00 - 19:00 懇親会 “Happy Hour”

                                 2
目次
 はじめに

 第0章 環境の準備

 第1章 SSISの基本的な使い方
  〓 EXCELフゔ゗ル → SQL Server
  〓 CSVフゔ゗ル   → SQL Server
  〓 CSVフゔ゗ル   → SQL Azure

 第2章 SSISによるイベントログの取り込み
  〓 ゗ベントログ    → SQL Server

 第3章 PowerPivot を使用した分析
  〓 PowerPivot for EXCEL
  〓 PowerPivot for SharePoint


                                3
本セッションの内容と目的
SQL Server 2008 R2 が提供するBI機能を使用した、データ取込みか
ら分析の手法について解説します。

• SSIS を使用してEXCELやCSVフゔ゗ルだけでなく、クラウド上の
  SQL Server(SQL Azure)や゗ベントログからのデータ取込みも可
  能であることを知ってください
• PowerPivot を使用することで、使い慣れたEXCEL上で容易にデータ
  分析が行えることを知ってください

         SSIS                   PowerPivot
        加工/補正
                            分析/レポート
      ・独自コンバーター
      ・スクリプト               ・データの取り込み
      ・サードパーテゖ製品           ・CUBEの作成
                           ・PivotTableの作成




                                             4
ご注意

 • 本セミナーでは リリース前の製品を使用し
   ております

 • 製品の仕様は、正式リリース時に変更され
   ている可能性があることをご了承ください




                          5
お願い
 • 細かな手順を全てお話しすることができません!すみません!

 • 本日作成したプロジェクトと、その手順は「勉強会キット」に掲載
   http://www.microsoft.com/japan/powerpro/study/

 • より理解を深めるためにおすすめ
   ■SQL Server 2008 R2 自習書シリーズ
   http://www.microsoft.com/japan/sqlserver/2008/r2/prodinfo/
   ■SQL Server 2008 自習書シリーズ
    http://technet.microsoft.com/ja-jp/sqlserver/dd610200.aspx
   ■SQL Server 2008 バーチャルラボ
     http://technet.microsoft.com/ja-jp/virtuallabs/cc879114.aspx




                                                                6
SQL Server の BI 機能とは




                       7
SQL Server BI ~ 3つの柱
 必要最小限のSQL文の知識と、若干のコーディング力が求められる

   【データの準備】SSIS:SQL Server Integration Service

   データ移入作業の可視化と整形
   ・外部フゔ゗ル、データベースからの取り込み
   ・データ変換
   【データの分析】SSAS:SQL Server Analysis Service

   多次元データベースによる分析

   【データの可視化】SSRS:SQL Server Reporting Service

   資料作成の単純化
   • レポートテンプレートの作成、表示、印刷
   • パラメタ化による動的なレポートの生成
   • レポートの共有
   • Report Builder での容易な作成                      8
SQL Server 2008 のBI

      SQL Server                SharePoint




                       SSRS           Report
                                      Builder




               SQL               Business Intelligence
        SSIS




                                 Development Studio
               DB


                       SSAS
                                 Business Intelligence
                                 Development Studio



                     外部データソース                            9
SQL Server 2008 R2 でBIはこう変わる
 従来からの機能はそのままに、より使いやすく
      SQL Server                    SharePoint
                                PowerPivot for
                                  SharePoint     Reports
 BIという観点では影
 が薄れるがDWH構築
  には継続的に必須
                       SSRS
                                    EXCEL Services
                                発
                                行 編                     発
                                                 レ
                                  集              ポ      行
               SQL
        SSIS




                                                 ー
               DB                                ト
                                                 作
                                                 成

                                                 Report
                       SSAS                      Builder

                                 PowerPivot for EXCEL




                     外部データソース                               10
まずはインストール!




             11
デモ環境
        Windows Server 2008 R2 x64
        ・Active Directory
        ・SQL Server 2008 R2 EE x64
         ・゗ンスタンス機能
SQL01      〓データベースエンジンサービス(MSSQLSERVER)
         ・共有機能
           〓Business Intelligence Development Studio
           〓Integration Service

        Windows Server 2008 R2 x64(ドメ゗ンに参加済み)
        ・SharePoint Server 2010 Beta
        ・SQL Server 2008 R2 EE x64
SP01     ・゗ンスタンス機能
           〓データベースエンジンサービス(GEMINIBI)
         ・共有機能
           〓Analysis Service integrated to SharePoint

        Windows 7(※ドメ゗ンに参加済)
        ・EXCEL 2010 Beta
CLI01   ・SQL Server 2008 R2 PowerPivot for Excel 2010 - CTP 11 月版
        ・SQL Server 2008 R2 CTP 11 月版レポート ビルダー 3.0
        ・2007 Office system ドラ゗バ: データ接続コンポーネント




            SQL Azure
                                                                    12
デモ環境に必要なもの
•    Windows Server 2008 または 2008 R2
    ■評価版ダウンロード
     [2008](最大240日)
       http://www.microsoft.com/japan/windowsserver2008/trial-software.mspx
         ※評価機関延長方法 http://support.microsoft.com/kb/948472
     [2008R2](最大180日)
     http://technet.microsoft.com/ja-jp/evalcenter/dd459137.aspx

•    SQL Server 2008 R2 CTP 11月版
      http://www.microsoft.com/japan/sqlserver/2008/r2/prodinfo/
      downloads.mspx

•    SharePoint Server Enterprise 2010 Beta版
     「SharePoint サーバー 2010」で検索してください

•    Office 2010 Beta 版
     http://technet.microsoft.com/ja-jp/evalcenter/ee390818.aspx

•    SQL Server 2008 R2 PowerPivot for Excel 2010 - CTP 11 月版
      x64 http://go.microsoft.com/fwlink/?LinkID=168584&clcid=0x411
      x86 http://go.microsoft.com/fwlink/?LinkID=168583&clcid=0x411

•    SQL Server 2008 R2 CTP 11 月版レポート ビルダー 3.0
      「 SQL Server 2008 R2 CTP 11 月版レポート ビルダー 3.0」で検索してください

•    OLEDBドライバ(32ビット)
     2007 Office system ドライバ: データ接続コンポーネント
     ※検索してください!                                                               13
はじめの一歩
使用するツール

 • SQL Server Business Intelligence Development Studio
 • SQL Server Management Studio


はじめにやること

 • SQL Server Management Studio を起動
 • SQL Server Business Intelligence Development Studioを起動


Access/EXCELから読み込む場合には
 •   SQL Server Business Intelligence Development Studioの[プロジェクト]-
     [プロパテゖ]-[デバッグ]で Run64bitRuntime = False に設定
     ※OLEDBドラ゗バがx64に対応していないため


                                                                     14
64bit ランタ゗ムを無効にする方法




                      15
EXCELとテキストファイルの取り込みを通じ、SSISの基礎を学びましょう




                                        16
やりたいこと
 サンプルデータ(郵便番号データ)をSQL Serverに取り込む

         郵便番号
       全国一括データ
初回
        CSV/XSLX

        郵便番号
     全国差分-削除データ
                    差分削除
        CSV/XSLX
定例
        郵便番号
     全国差分-追加データ


         CSV/XLSX
                                    17
デモデータ「郵便番号データ」の構成と構造
   日本郵便が提供:http://www.post.japanpost.jp/zipcode/dl/kogaki.html
                一括データ:最終差分まで吸収されたデータ(毎月末に更新)
                 ├ 県別(<件名>_ALL.csv)
                 └ 全国(KEN_ALL.csv)(約12万件)

                差分データ:前回からの差分(毎月末にリリース)
                 ├ 新規追加データ(add_xxxx.csv)
                 └ 廃止データ(del_xxxx.csv)
  dantaicode    全国地方公共団体コード(JIS X0401, X0402)(5桁) 半角数字
      pcode5    (旧)郵便番号(5桁)                       半角文字列(空白あり)
      pcode7    郵便番号(7桁)                          半角文字列(先頭0あり)
  ktodofuken    都道府県名                             半角カタカナ(コード順に掲載)
kshikuchoson    市区町村名                             半角カタカナ(コード順に掲載)
      kchoiki   町域名                               半角カタカナ(五十音順に掲載)
   todofuken    都道府県名                             漢字(コード順に掲載)
 shikuchoson    市区町村名                             漢字(コード順に掲載)
       choiki   町域名                               漢字(五十音順に掲載)
         flg1   一町域が二以上の郵便番号で表される場合の表示            1-該当,0-該当せず
         flg2   小字毎に番地が起番されている町域の表示               1-該当,0-は該当せず
         flg3   丁目を有する町域の場合の表示                    1-該当,0-該当せず
         flg4   一つの郵便番号で二以上の町域を表す場合の表示            1-該当,0-該当せず)
         flg5   更新の表示       0-変更なし,1-変更あり,2-廃止(廃止データのみ使用)
         flg6   変更理由        0-変更なし,1-市区町政・分区・政令指定都市施行,2-住居表示の実施,
                            3-区画整理,4-郵便区調整等,5-訂正,6-廃止(廃止データのみ使用) 18
まずは簡単に



ウゖザードを使ってあっという間に実装




                     19
一括゗ンポートの処理の流れ
   変換元                                 変換先
                        SSIS
                    変換プロセス

  郵便番号                     コピー
            接                      接
全国一括データ     続                      続
            マ   テ   テ          カ   マ
            ネ                      ネ
            ー   ー   ー          ラ   ー
 XLS/XLSX   ジ   ブ   ブ          ム   ジ
            ャ   ル   ル          の   ャ
            (   削   作              (
            変                  マ   変
            換   除   成          ッ   換
            元                  プ   先
            )                      )




                                             20
SSIS゗ンポートおよびエクスポートウゖザード
• ウゖザードに回答するだけで、簡単なデータフローを作成することができる
• Excel を SQL Server に変換するだけならば1分で実装可能
       ウゖザードの流れ

    データソース(Excel)を選択

  変換先デバ゗ス(SQL Server)を選択

       データフローの設定                   変換プロセス

     テーブル削除実施の有無                       コピー
      テーブル作成の有無            接   テ   テ   カ        接
                           続                    続
    データ新規?/追加?/削除?         マ
                               ー   ー   ラ    新
                                                マ
                               ブ   ブ   ム    規
 コピー元カラムとコピー先カラムのマップ       ネ   ル   ル   の    コ   ネ
                           ー   削   作   マ    ピ   ー
                           ジ   除   成   ッ    ー   ジ
                           ャ           プ        ャ



                                                21
SSIS゗ンポートおよびエクスポートウゖザード

(参考)データソースを選択




                  UNCパスも使用可能




                               注意




                                    22
SSIS゗ンポートおよびエクスポートウゖザード

(参考)変換先の選択




                          23
SSIS゗ンポートおよびエクスポートウゖザード

(参考)コピー方法の選択


                          全体を複製する




                          一部を複製する




                             EXCELの場合はシート名




                                             24
SSIS゗ンポートおよびエクスポートウゖザード

(参考)コピー元テーブルの選択




                            コピー先のテーブルを指定
     複製したいテーブル(Excel
                          既定の名前は変換元と同じになるが
     の場合にはシート)を選択
                             変更することもできる




                          作成するテーブルの詳細設定


                                             25
                       次ページへ
SSIS゗ンポートおよびエクスポートウゖザード

(参考)コピー先テーブルの詳細設定
指定したテーブルが既存存在しな
い場合には「作成する」が規定値




新規に作成する変換先テーブルの情報。
カラム名とデータ型は、変換元から自動判断された設定される
変更したら「SQLの編集」をクリックすること
                               26
SSIS デザ゗ナーで全体のフローを確認
       SSISデザ゗ナー
   制御タブ          データフロー
移入処理の全体制御を行う   データセット間のデータフ
               ローを制御する
                                      変換プロセス

                                          コピー
                              接   テ   テ   カ        接
                              続   ー   ー   ラ    新   続
                              マ   ブ   ブ   ム    規   マ
                              ネ   ル   ル   の    コ   ネ
                              ー   削   作   マ    ピ   ー
                              ジ   除   成   ッ    ー   ジ
                              ャ           プ        ャ




                                                   27
テキストからの読み込みはすこしだけ面倒



ウゖザード〒微調整




                      28
EXCELとの違い
 入力フゔ゗ルの属性を定義する必要がある
 ※64ビット環境で使用可能
 •   データソースとして「フラットファイルソース」を選択
 •   入力フゔ゗ルの特性を設定する
      • コードページ
      • フゔ゗ルの種類
         • CSV/固定幅/幅合わせなし(「行区切り文字」で区切る)
      • カラムの装飾文字
      • ヘッダー関連
         • ヘッダーの区切り文字
         • ヘッダーの行数
      • カラム(列)の定義
         • 行の区切り文字(改行文字 等)
         • 列(カラム)の区切り文字
         • 列の属性(データ型、桁数 等)



                                          29
SSIS゗ンポートおよびエクスポートウゖザード(CSV→SQL Server)

(参考)データソースの選択(全般タブ)



                                      UNC名を使用可能




                                注意


                                                  30
SSIS゗ンポートおよびエクスポートウゖザード(CSV→SQL Server)

(参考)データソースの選択(列タブ)




                                          31
SSIS゗ンポートおよびエクスポートウゖザード(CSV→SQL Server)

(参考)データソースの選択(詳細設定)
                              各列の属性
                              ここで定義した値に沿って変換先テー
                              ブルの属性が決定する




                          これを使って事前に各列の属性を予測
                             しておき、あとから微調整




                                              32
SSIS゗ンポートおよびエクスポートウゖザード(CSV→SQL Server)

(参考)コピー元テーブルを選択(列マップ)



   カラム名も合わせてくれる


                                 1バ゗ト符号付整数(DT_I1)
                                 2バ゗ト符号付整数(DT_I2)
                                        ↓
                                      smallint

                                    文字列(DT_STR)
                                         ↓
                                       varchar




                                                    33
SSIS゗ンポートおよびエクスポートウゖザード(CSV→SQL Server)

(参考)データ型マッピングの確認


                                 変換を伴う場合にはエラー処理
                                   についても設定が必要




                      失敗 or 無視




                                                  34
SSIS デザ゗ナーで全体のフローを確認

    制御タブ    データフロー


                     変換に関する処
                     理はこの中に




                               35
データフローの構成要素
    変換元                変換           変換先

       出                出               外
       力                力               部
       列                列               列
   外               入                入
   部               力                力
   列   エ           列    エ           列   エ
       ラ                ラ               ラ
       ー                ー               ー
       出                出               出
       力                力               力


           変換先              変換先         変換先
               外                外           外
               部                部           部
               列                列           列
           入                入           入
           力                力           力
           列   エ            列   エ       列   エ
               ラ                ラ           ラ
               ー                ー           ー
               出                出           出
               力                力           力

                                                36
データフローの変換元/変換/変換先
 変換元       変換       変換先




                          37
エラー処理
エラー処理の種類
• エラーを無視する
• エラーコンポーネントに渡す
   • ゗ベントハンドラーを使用して処理
• エラー行をリダ゗レクト
   • エラーが発生した「行」をリダ゗レクトして別のテーブルやフゔ゗ル
     に保存する
どの時点でエラーを捕捉するのかを検討することが重要


                       カラム単位に設定できる




                                       38
不備のある入力データを出力
• 出力先として「変換先」を指定
• 入力データの不備を捕捉するので「変換元」のエラーを取得
• 変換元の[エラー出力]先を「行リダ゗レクト」に設定

     変換元
                   出力列で定義されている
         出     「各列の属性(データ型,長さなど)」
         力      に合致しない場合にはエラー出力へ
         列          リダ゗レクトされる
     外
     部
     列   エ
         ラ
         ー
         出
         力



                                    39
ErrorCode と ErrorColumn
 ErrorCode     : エラーコード
 ErrorColumn   : エラーが発生した出力列の ID




                                   40
差分データを削除
郵便番号データは月に1度、差分データ(削除データ一覧)が発行される

  変換元                       変換先
               SSIS
              変換プロセス
 郵便番号
 全国差分                        既存
                行削除
 削除データ   接              接
         続              続
         マ
         ネ
             入力行に合致する   マ
                        ネ

  CSV
         ー
         ジ
             行を検索して削除   ー
                        ジ
         ャ
         (
             する         ャ
                        (
         変              変
         換              換
         元              先
         )              )




                                    41
OLE DB コマンド
• 条件に一致した行を更新/削除
• パラメータ化されたSQL文を指定


 (例)KEN_ALL テーブルから、以下の条件に合致する行を削除

     “dantaiCode” = “入力行のCode”
     “pcode7” = “入力行のcode7”


  Delete from KEN_ALL
  where “dantaiCode” = ? and “pcode7” = ?

                       変換元の列と対応付ける



                                            42
おぼえておきたい処理

 • 抽出行のコピー
     SQL文に合致する行のみ処理
 • 文字マップ
     ひらがな/カタカナ/全角/半角 変換
 • 派生列変換
     カラム結合して新しいカラムを生成
 • 条件分岐
     条件に合致した入力行ごとにコピー先を変える
 • マルチキャスト変換
     1行を複数のテーブルにコピー
 • 文字列の置換
    • カラム内文字列の特定文字を置き換え


                              43
処理の自動化
プロセスを実装し終えたら
・[ビルド]する
   - binフォルダに .dtsx フゔ゗ルが作成される
・SQL Server Agent ジョブとして登録
   - SQL Server Agent サービスを起動しておく(自動起動にする)
   - .dtsxフゔ゗ル(パッケージフゔ゗ル)を登録




                                             44
性能監視とチューニング

 データフローエンジンのパフォーマンスの監視
  http://msdn.microsoft.com/ja-jp/library/ms137622(SQL.105).aspx

 データフローのパドーマンスの向上
  http://msdn.microsoft.com/ja-jp/library/ms141301(SQL.105).aspx




                                                                   45
クラウドだってターゲット




               46
一括゗ンポートの処理の流れ
 流れはSQL Server と何も変わらない
  変換元                 SSIS
                                        変換先
                  変換プロセス

  郵便番号                       コピー
          接                        接
全国一括データ   続                        続
          マ   テ   テ           カ    マ
          ネ
              ー   ー          とラ    ネ
          ー                  デム    ー
  CSV     ジ   ブ   ブ                ジ
          ャ   ル   ル          ーの    ャ
          (   削   作          タマ    (
          変
              除   成          変ッ    変
          換                  換プ    換   SQL Azure
          元                        先
          )                        )




                                                   47
SQL Azureとの接続
                .NETプロバ゗ダーを使用
                する


                SQL Azureのホスト名を
                指定する


                Windows統合認証は使
                えないので、SQL Azure
                のID/パスワードを使用
                する




                              48
SQL Azure のサーバー名をチェック
 http://sql.azure.com/




                         これがサーバー名




                                    49
日本語の取り扱い~カラムの定義
      IF NOT EXISTS(SELECT * FROM sys.schemas WHERE name = N'dbo')
      BEGIN
      EXEC(N'CREATE SCHEMA "dbo"')
      END
      CREATE TABLE "dbo"."KEN_ALL" (
      "ID" int Identity(1,1) PRIMARY KEY,
      "DantaiCode" int,
      "PCode5" nvarchar(5),
      "PCode7" nvarchar(7),
      "KTodofuken" nvarchar(255) COLLATE Japanese_CI_AS,
      "KShikuchoson" nvarchar(255) COLLATE Japanese_CI_AS,
      "KAzana" nvarchar(255) COLLATE Japanese_CI_AS,
      "Todofuken" nvarchar(255) COLLATE Japanese_CI_AS,
      "Shikuchoson" nvarchar(255) COLLATE Japanese_CI_AS,
      "Azana" nvarchar(255) COLLATE Japanese_CI_AS,
      "Flg1" smallint,
      "Flg2" smallint,
      "Flg3" smallint,
      "Flg4" smallint,
      "Flg5" smallint,
      "Flg6" smallint
      )
      GO


                                                                     50
日本語の取り扱い~データ変換
 Unicode 文字列への変換




                   51
若干のコーデゖング力が必要です




                  52
構築するシステム゗メージ
                                    データベース:LogReport


                      SSIS



                                             テーブル
                                                            ログを収集する
                                                            コンピューター
                                                            とログフゔ゗ル
                                      ComputerList            のリスト
ネットワーク上のWindows Server または
Windows Client から、SSISのWMIデータリーダー
                                                            ログフゔ゗ルご
を使用して゗ベントログを収集し、SQL Server          Eventlog_Security       とにテーブルを
2008 / R2 に保存する。                                               作成
                                     Eventlog_Application

SSISで作成したパッケージは定期的に実行するもの                Eventlog_System
とし、前回実行時からの差分は゗ベントログの
TimeWritten を基準にして判断するものとする。
                                                                  53
ソース:Eventlogレコードの形式
Category           カテゴリ番号
CategoryString     カテゴリ名
ComputerName       ゗ベントを生成したコンピュータ名
Data               ゗ベントの付帯情報
EventCode          Uint16 形式の゗ベントID
EventIdentifier    Uint32 形式の゗ベントID
InsertionStrings   ゗ベントの付帯情報
Logfile            ログフゔ゗ルの名前(System,Application,Security など)
                   ゗ベントの説明文。4000文字(bstr)を超える可能性あり。
Message
                   シングルクオーテーションが含まれることが多い。
RecordNumber       ゗ベントレコードの通番 int32(max 2,147,483,647 )
SourceName         ゗ベントを生成したソースプロセス(MSSQL,MSInstaller など)
TimeGenerated      ゗ベントが発生した日時。標準時で生成。
TimeWritten        ゗ベントが書き込まれた日時。標準時で生成。
Type               ゗ベントのタ゗プ(情報、エラー、警告、成功の監査、失敗の監査)
User               ゗ベントを発生させたユーザー
                                                               54
テーブル構成
ComputerList                               ComputerName(FQDN名)
 ソースコンピュータのリスト                             LogFileName

EventLogData_<LogfileName>                 Number(int)(key)
                                           Category(nvarchar(50))
<logfileName> には、Application,              CategoryString(nvarchar(50))
System, Security などが入る                     ComputerName(nvarchar(50))
                                           Data(nvarchar(max))
     Server01         Server02
                                           EventCode(nvarchar(50))
                                           EventIdentifier(nvarchar(50))
                                           InsertionStrings(nvarchar(50))
                                           Logfile(nvarchar(50))
                                           Message(nvarchar(max))
                                           RecordNumber(int)
                                           SourceName(nvarchar(max))
                                           TimeGenerated(datetime)
EventLogData EventLogData   EventLogData   TimeWritten(datetime)
_System      _Application   _Security      Type(nvarchar(50))
                                           User(nvarchar(50))
                                                                            55
(参考)゗ベントログを取得するスクリプト例


strComputer = “.”
Set objService = GetObject(“winmgmts:¥¥“ & strComputer & “¥root¥cimv2”)
Set objEvtSet = objService.ExecQuery _
        ("Select * From Win32_NTLogEvent Where Logfile='System'")

For Each e In objEvtSet

  wscript.echo e.ComputerName & "," & e.EventCode

Next




                                                                      56
Logfile 属性について
使用可能なLogfile属性は、以下のコマンドで調査できる
C:¥> wmic nteventlog list brief

FileSize LogfileName              Name
NumberOfRecords
6361088 Application              C:¥ ¥Logs¥Application.evtx              8022
69632     HardwareEvents         C:¥ ¥Logs¥HardwareEvents.evtx           0
69632     Internet Explorer      C:¥ ¥Logs¥Internet Explorer.evtx        0
69632     Key Management Service C:¥ ¥Logs¥Key Management Service.evtx   0
69632     Media Center           C:¥ ¥Logs¥Media Center.evtx             0
1052672   OAlerts                C:¥ ¥Logs¥OAlerts.evtx                  254
69632     ODiag                  C:¥ ¥Logs¥ODiag.evtx                    0
69632     Operations Manager     C:¥ ¥Logs¥Operations Manager.evtx       120
69632     OSession               C:¥ ¥Logs¥OSession.evtx                 4
30740480 Security                C:¥ ¥Logs¥Security.evtx                 40359
8458240 System                   C:¥ ¥Logs¥System.evtx                   20623
1118208 Windows PowerShell       C:¥ ¥Logs¥Windows PowerShell.evtx




                                                                                 57
(参考)WINEVT¥Channels 配下の゗ベント
HKLM¥SOFTWARE¥Microsoft¥Windows¥CurrentVersion¥WINEVT¥
Channels 配下の゗ベントは Win32_NTLogEvent では取得できない。

 代替策 C:¥>wevtutil.exe    コマンド




                                                         58
取り込みプロセスをSSISでデザ゗ン




                     59
制御フローを考えてみる
            開始

                       参照         ComputerList
         ソース取得
                                  取り込みソースのリスト

    ソースごとに処理を繰り返し

       テーブル作成
S
S   取り込み範囲のチェック
I
S   ゗ベントログを一括取得

    レコードを1件ずつ取り出し
      Insert 文を生成
       Insert into …

                            EventLogData_<logfilename>
           終了
                                                         60
制御フローを作成するには
 • 部品(制御フロー項目)をデザ゗ン画面にドラッグ&ドロップ
 • 各部品のパラメタを設定する
 • 部品同士を矢印で接続して「フロー」を決める
        事前に処理の流れを決めておくことが重要
              開始

           ソース取得


     ソースごとに処理を繰り返し
         テーブル作成
 S
 S   取り込み範囲のチェック
 I   ゗ベントログを一括取得
 S
     レコードごとに Insert 繰り返し

         Insert into …



             終了                   61
使用する部品(制御フロー項目)

• SQL文を発行するための部品
• 「接続マネージャー」の定義が必要


• 処理を繰り返すための部品
• フゔ゗ルや変数、レコードセットの読み込みに使用
• 処理回数が未定の場合に使用する


• VB.NETまたはC#を使用して柔軟な処理を実装したい場合に使用
• 文字列の細かな処理などに使用すると便利


• WMIを使用した処理結果を受け取る場合に使用
• 今回は゗ベントログの取得に使用している

ちなみに
• EXEコマンドを実行したい場合には
• unix/linux 等からログを収集する場合には
                                     62
•   制御フロー項目のI/O
•   接続マネージャー
•   変数
•   Expression属性
                   63
制御フロー項目                  接続マネージャー

 各項目には、入力と出力を設定する
   IN                     OUT
  直接入力
               部品       データベース
 データベース
                         フゔ゗ル
  フゔ゗ル
                          変数
      変数

(例)

  SQL文                  結果セット
 ループの中で処理する         結果のレコードセットを変
 場合に、SQL文を変え        数に格納し、次の処理で使
 ながら処理が可能           用できる

                                 64
接続マネージャー
• 各部品(制御フロー項目)が外部リソースに接続する際に使用
• 部品間で共有が可能

                            フ
                            ゔ
                            ゗
  変数     WQL   WMIデータリーダー
                            ル
                            接
                            続

                  WMI接続




                                 65
変数
処理フローの中で使用できる、俗にいう「変数」
スコープの設定が可能(プロジェクト全体/ループ内/部品内)
選択可能な型
     Boolean/Byte/Char/DateTime/DBNull/Doube/Int16/Int32/
     Int64/Object/SByte/Single/String/Uint32/UInt64

TIPS
     • 受け取る値の型がよくわからない場合には、「Object」型を選
       択しておくとよい

     • Expressions属性により、変数の値を動的に設定可能

                                         超便利!


                                                            66
Expressions 属性
 • 部品(制御フロー項目)、接続マネージャー、変数などに用意されてい
   る属性の1つ
 • Expression(式)を記載することで、指定した他の属性にダ゗ナミック
   に値を代入することができる


                        (例)SQL実行タスク
                        SqlStatementSource属性に
                        はSQL文を記載するが、処理
                        によって接続先のテーブルを
                        変えたい場合がある。
                        Expressions属性を使用する
                        ことで、
                        SqlStatementSourceの値を
                        部品が呼ばれる都度変更する
                        ことができる。




                                                67
Expressions 属性の使用例




"IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[EventLogData_"+ @[User::tmpLogfileName] +"]')
AND type in (N'U') ) "+
“CREATE TABLE [dbo].[EventLogData_”+ @[User::tmpLogfileName] +“]
(
 [Number] [int] IDENTITY(1,1) NOT NULL,
 [Category] [nvarchar](50) NULL,        テーブル名に、変数
 [CategoryString] [nvarchar](50) NULL,  @[User::tmpLogfileName] を
 [ComputerName] [nvarchar](50) NULL,    使用することで、部品が呼ばれるた
 [Data] [nvarchar](max) NULL,           びに、異なるテーブルに対して処理
 ・                                      を行うことができる
 ・
 ・                                                               68
スクリプトタスク内での変数の使用
  スクリプト内で変数取り扱うことで、VB.NETやC#を使用した柔軟な加工が可能


(例)DateTimeカラムに保存する前にDateTime形式に変換

Dim strTimeGenerated As String = “19000101 00:00:00”
If Not IsDBNull (Dts.Variables(“User::TimeGenerated”).Value) Then
   strTimeGenerated = Dts.Variables(“User::TimeGenerated”).Value
   strTimeGenerated = Mid(strTimeGenerated , 1, 8) & “ “ & _
                      Mid(strTimeGenerated , 9, 2) & “ “ & _
                      Mid(strTimeGenerated , 11, 2) & “ “ & _
                      Mid(strTimeGenerated , 13, 2)




                                                                    69
70
制御フローの確認
              開始

                         参照         ComputerList
     1     ソース取得
                                    取り込みソースのリスト

    2 ソースごとに処理を繰り返し

     3   テーブル作成
S
S   4 取り込み範囲のチェック
I
S   5 ゗ベントログを一括取得

    6 レコードを1件ずつ取り出し
     7   Insert 文を生成
     8   Insert into …

                              EventLogData_<logfilename>
             終了
                                                           71
処理1:ソース(コンピュータ一覧)の取得
 ゗ベントログの取り込み元一覧を取得する

        SQLStatement
                                            接
                                            続
  SQL




                                            マ
  タ     Select ComputerName,LogfileName     ネ
  ス     From dbo.ComputerList               ー
  ク                                         ジ
                                            ャ   dbo.ComputerList



              User::ComputerList
                                           ADO列挙子
                                          (データセット)
           結果セットを変数に保存

                                                               72
処理2:ソースごとに処理を繰り返し
                                       Foreachコンテナの
                 User::ComputerList
                                       入力パラメータ
                                          ADO列挙子
                                         (データセット)

                    ForEach ループ
               User::tmpComputerName
                User::tmpLogfileName


                     テーブル作成
                 取り込み範囲のチェック

                 ゗ベントログを一括取得

                レコードを1件ずつ取り出し
     Foreach




                   Insert 文を生成
     ル              Insert into …
     ー
     プ

                                                      73
Foreach の引数「User::ComputerList」について
 ComputerList 変数は データセットであるため、これを1行ずつ取り込むため
 の変数を定義し、ComputerList から読み込んだレコードの格納先を指定する。
 なお、ComputerListは1行あたり2列(ComputerName, LogFileName)が含
 まれるので、2つの変数を定義する必要がある。

         User::ComputerList
          列0             列1
 行0   ComputerName   LogFileName
 行1   ComputerName   LogFileName




                                   列0   User::ComputerName

                                   列1    User::LogFileName




                                                             74
処理3:テーブルを作成
 <LogfileName>゗ベントログを格納するテーブルが無い場合には作成する

                       User::tmpComputerName
                         User::tmpLogfileName

      Expressions(SQLStatement)
      "IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =




                                                                                    dbo.Eventlog
      OBJECT_ID(N'[dbo].[EventLogData_"+ @[User::tmpLogfileName] +"]')
      AND type in (N'U') ) "+                                            接
                                                                         続
      "CREATE TABLE [dbo].[EventLogData_"+ @[User::tmpLogfileName] +"]   マ
      ([Number] [int] IDENTITY(1,1) NOT NULL,                            ネ
SQL




       [Category] [nvarchar](50) NULL,                                   ー
       [CategoryString] [nvarchar](50) NULL,                             ジ
文      [ComputerName] [nvarchar](50) NULL,                               ャ
タ      [Data] [nvarchar](max) NULL, [EventCode] [nvarchar](50)
        ・
ス       ・
ク      [User] [nvarchar](50) NULL,
      CONSTRAINT [PK_EventLogData_"+ @[User::tmpLogfileName] +"]
      PRIMARY KEY CLUSTERED ( [Number] ASC
      )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
      IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
      ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]                                完全なSQL文は
      ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]"
                                                                          手順書で
                                                                                     75
処理4:取り込み範囲のチェック
              SQLタスクの入力パラメータ                       変数はスコープ内であ
                  User::tmpComputerName            ればどこででも使える
                   User::tmpLogfileName


        Expressions(SQLStatement)

                                                      接




                                                                dbo.Eventlog
SQL




      Select MAX(TimeWritten) as MaxTimeWritten       続
      from [EventLog].[dbo].[EventLogData” +          マ
タ     @[User::tmpLogfileName] + “]                    ネ
ス     Where [ComputerName] Like ‘“ +
                                                      ー
ク                                                     ジ
      @[User::tmpComputerName]” + “’%”                ャ



                                                  テーブルには複数のコン
                                                  ピュータの゗ベントログ
                 User::MaxTimeWritten
                                                  が格納されていることに
              戻り値                                      注意
                                                                 76
処理4:゗ベントログを一括取得
             入力パラメータ
                   User::tmpComputerName
                    User::tmpLogfileName
                    User::MaxTimeWritten          接続マネージャ(WMI)
                                               Expression(ConnectionString)
      WQLQuerySource                 属性値に変数を
                                                 User::ConnectionString
                                      使用できる
WMI




       User::WQL                                  Expression(Value)
デ      Expression(Value)                         “ServerName=¥¥¥¥”+@
ー      “Select * from Win32_NTLogEvent           [User::tmpComputerNa
タ      where logfile=“ +                         me]+”;Namespace=¥¥ro
リ      @[User::tmpLogfileName] + “’ and          ot¥¥cimv2;UserNtAuth;U
ー                                                serName=;”
       TimeWritten > “ + (DT_WSTR 20)
ダ
ー      @(User::MaxTimeWritten)
                                                              Expressionsの
                                       キャストが可能                中では「¥」は
                                                                制御記号
                   User::EventData



                                                                          77
処理5:レコードを1件ずつ取り出し
                              取り出した値が見え
         User::EventData
                                ずらい場合には
                              Object形式にしてお
                                   くと便利
         ForEach ループ

          User::Category
       User::CategoryString
       User::ComputerName


            User::Type
            User::User



         Insert 文を生成

        Insert into を実行


                                         78
処理6:Insert 文を生成
      SQL文を生成するにあたり、各値をSQL Serverに取り込み可能な形式に整形する

                                 User::Category


                                    User::User                  変数の値がNullかどう
                                                                かをチェックしてから
                                                                   取り出す

          Dim strCategory As String = ""
          If Not IsDBNull(Dts.Variables("User::Category").Value) Then
                    strCategory = Dts.Variables("User::Category").Value.ToString
          End If
                                                             Messageにはシングルクオーテーションが
                                                              含まれているので置き換え
 Script




          Dim strMessage As String = ""
          If Not IsDBNull(Dts.Variables("User::Message").Value) Then
タ                  strMessage = Dts.Variables("User::Message").Value.ToString
ス                  strMessage = Replace(strMessage, "'", "-")
ク         End If


                                                                                  79
                                次のページに続く
DateTime列に取り込めるように整形

         Dim strTimeGenerated As String = "19000101 00:00:00"
         If Not IsDBNull(Dts.Variables("User::TimeGenerated").Value) Then
            strTimeGenerated = Dts.Variables("User::TimeGenerated").Value.ToString
            strTimeGenerated = Mid(strTimeGenerated, 1, 8) & " " & _
                                 Mid(strTimeGenerated, 9, 2) & ":" & _
                                 Mid(strTimeGenerated, 11, 2) & ":" & _
Script




                                 Mid(strTimeGenerated, 13, 2)
         End If
                                                                SQL文を生成
タ
ス        Dim strSQL As String = "INSERT INTO [EventLog].[dbo].[EventLogData_" &
ク
         strLogfile & "] ([Category]" & _
                        ",[CategoryString]" & _
                        ",[ComputerName]" & _

            " VALUES('" & strCategory & "'," & _
                    "'" & strCategoryString & "'," & _
                    "'" & strComputerName & "'," & _

         Dts.Variables("User::InsertSQL").Value = strSQL


                                   User::InsertSQL
                                                                                     80
処理7:Insert Into を実行
                         User::InsertSQL


       SQLStatement
                          User::InsertSQL
        Value
          INSERT INTO
          [EventLog].[dbo].[EventLogData_Application]




                                                                    dbo.Eventlog
          ([Category],[CategoryString],[ComputerName],[D
                                                                接
          ata],[EventCode],[EventIdentifier],[EventType],[In
 SQL




                                                                続
          sertionStrings],[LogFile],[Message],[RecordNumb       マ
タ      ') er],[SourceName],[TimeGenerated],[TimeWritten]        ネ
ス         ,[Type],[User]) VALUES('0','','TF-SQL01-              ー
ク         01.t6303.contoso.co.jp','','12290','1073819650','3'   ジ
                                                                ャ
          ,'System.String[]','Application','Package "Package"
          has been
          cancelled.',3205,'SQLISPackage100','20090923
          03:23:31','20090923 03:23:31','情報
          ','T6303¥administrator')


                                                                     81
セルフサービスBI




            82
「BIを支えるIT」が抱える問題
 •   BIを求めているのはだれ?
      – 経営層またはビジネス管理層、ただし実際に分析するのは IW
        ※決して ITPro や DEV ではない
 •   BIがうまく普及しない要因は?
      – ツールの操作性とプラットフォームの柔軟性
      – データベース管理者のBIに関するスキル
      – データの散在による分析のための準備
 •   BIを取り巻く環境の変化
      – ビジネススピード
      – 分析データの散在とDB統合の煩雑さ
         • 複数プラットフォーム(SQLSV、ORACLE、その他)
         • エンドユーザーコンピューテゖングの浸透(EXCELやテキストデータ)
         • WEB上のデータ
         • クラウドの出現
      – システム管理者へのニーズ
         • システムの安定稼働



                                                83
「BIを支えるIT」に必要なもの


   IWの裁量を生かすプラットフォーム

     IWのスキルを生かす操作性




     セルフサービス BI

                       84
PowerPivot(CodeName Gemini)とは
  PowerPivot for EXCEL 2010

  •   使い慣れた Excel に Data Analysis エンジンを組み込み
  •   基本操作はピボットテーブル
  •   64bit インメモリ エンジンと圧縮ゕルゴリズムによる高速処理
  •   SQL Server SSASを介さず、さまざまなデータソースへ直接接続
  •   100万件を超えるデータに対応(EXCELの上限は1,048,576件)


  PowerPivot for SharePoint 2010 ※Excel Services 用の PowerPivot

  •   PowerPivot を使用したEXCELシートの共有
  •   EXCEL サービスに PowerPivot 処理機能を付加
  •   ブラウザを使用して PowerPivot を使用したEXCELブックを表示
  •   Silverlight ベースの PowerPivot ギャラリー
  •   保存されたBOOKは ReportBuilder で編集しレポートして発行
  •   サーバー負荷を監視するためのダッシュボード


        データベース管理者が分析用のデータを準備することなく、
          Information Worker にすべての作業を委託できる
                                                                 85
CUBEの作成もEXCELで




                 86
PowerPivotの多彩なデータソース




                       87
PowerPivotの利用゗メージ
                           オンプレミス
                                    ローカルPC

                                        CSV
              SQL Server 2008 R2
  SQL Azure

                  CUBEの作成




                  PowerPivot




                ピボットテーブル
                                              88
PowerPivotが埋め込まれたXLSXフゔ゗ルのブラウズ


                            CUBE ごと保存される
   CUBEの作成



                                      EXCEL 2010
                                      PCのリソースを使用
   PowerPivot       XSLX


                                      Internet
                                      Explorer
                                       SPのリソースを使用
                   SharePoint
                with PowerPivot
  ピボットテーブル




                                                   89
PowerPivot for EXCEL 2010 を使用するには
 [フゔ゗ル]メニューから[オプション] を選択し[ゕド゗ン]をクリック
 「管理」から「COMゕド゗ン」を選択し、[設定]をクリック
 [Microsoft.AnalysisSerice.Modeler.FieldList.AddinIntegration]を選択




                                                                    90
どうしてもPowerPivotを゗ンストールできない場合
【SQL】PowerPivot for EXCEL 2010 がうまくインストールできない場合の対処
http://blogs.technet.com/junichia/archive/2010/01/20/3306943.aspx




                                                               91
PowerPivot 利用手順

 1. 計画
 2. 分析軸用のテーブルを準備
 3. Excel 2010 から PowerPivotウゖンドウを
    起動
 4. 分析に使用するテーブルを読み込み
 5. 計算列の追加
 6. リレーションシップの作成
 7. 分析を実行(ピボットテーブルを作成)
 8. 保存 & 発行

                                     92
1.計画
 •   メジャー(尺度)
      – 分析したい要素
         (例)エラーの数、CPU負荷、空メモリ
 •   ディメンジョン(分析軸)
      – メジャーをマップする軸
         (例)日時、サーバー名、゗ベントソース、゗ベントタ゗プ
      – 一意の値




                                          日時
                    エラー   0   0   0   0
 Cmputer


           Source




                    重大    0   0   0   0
           Name
  Name




                    CPU   0   0   0   0
                    メモリ   0   0   0   0

                                               93
゗ベントログ分析の計画
• それぞれのデータの関連性を機械的に見出すのは難しい
• 時間を軸に゗ベントやパフォーマンスを関連付ける
                        日時




                                               パフォーマンス
System    Application    Security   ・・・・・・・・      ログ




         ゗ベントタ゗プ             コンピューター名




                                                         94
2.分析軸用テーブルを作成
    EXCELで以下のテーブルを作成する
                                         日時
•   時間軸テーブル
                                         2010/1/1 00:00:00
     ⁃ ゗ベントログテーブルを時系列に関連付けるために使用
                                         2010/1/1 00:01:00
     ⁃ 形式 yyyy/mm/dd hh:nn:00
                                         2010/1/1 00:02:00
     ⁃ 1年分作成すると 60*24*365 = 525600 行
                                         ・
     ⁃ PowerPivot取込後に計算列(年、月、日、時、分)を作成
                                         ・

•   ログタイプテーブル                            ログタイプ
     ⁃ ゗ベントログを種別ごとに関連づけるために使用
                                         情報
     ⁃ レコードは「情報」「警告」「エラー」「重大」
                                         警告
                                         エラー
                                         重大

•   コンピューター名テーブル                         コンピューター名
     ⁃ ゗ベントログ同志および゗ベントログとパフォーマンスロ        sql01.techfielders.com
       グを関連づけるために使用
     ⁃ FQDN名でレコードを作成                     cl01.techfielders.com
     ⁃ PowerPivot取込後に計算列(コンピューター名)を作成    ・
                                         ・
                                                                  95
時間軸テーブルの作成について
最初の2行だけ入力して、「フゖル」を使用
行番号 525600 行(1年分)まで自動入力する




                            96
3.Excel 2010 から PowerPivot を 起動




                               作成したCUBEをもとに
                               ピボットテーブル作成




              この画面でCUBEを作成する




                                              97
4.分析に使用するテーブルを読み込み
 • SQL Server より
    – ゗ベントログ テーブル
       • Eventlog_System
       • Eventlog_Application
    – コンピューターリスト テーブル
       • ComputerList
 • EXCEL より
    – 時間軸 シート
    – ゗ベントタ゗プ シート




                                98
(TIPS)SQL Server からの読み込み
 SQL Server からの読み込みでエラーが出る場合には、
 「.Net Framework Data Provider for SQL Server 」を使用




                                                     99
(注意)PowerPivotの留意点ー利用者のゕクセス権
【SQL】PowerPivotを使用してデータベースに接続するとアクセスが拒否される
http://blogs.technet.com/junichia/archive/2010/01/21/3307187.aspx

 • (できれば)AD統合認証を使用
 • ADユーザーに対してDBへのゕクセス権を付与
     – 3段階のゕクセス権に注意
        • 第1段階:SQL Serverへのログ゗ン権限
        • 第2段階:データベースへの接続権限
        • 第3段階:テーブルの「選択(Select)」権限




                                                                100
5.計算列の追加
• 分析に使用する数値を既存の列をゕレンジして算出する
   • (例)受注金額 =「受注単価」列 × 「受注数量」列
       受注コード       品番       受注単価 受注数量 受注金額
       9999999     999       9999 999 999999


                                     =[受注単価]*[受注数量]

• リレーションシップを作成するためにテーブル間で値の形式を合わせる
   • (例)日時のリレーションを構築するために、粒度を合わせる
              日時                   日時2
       2010/01/01 9:21:15   2010/01/01 9:21:00


         TimeGenerated             日時2
       2010/01/01 9:21:59    2010/01/01 9:21:00


                                                      101
今回のシステムで追加する列
 Eventlog_<ログファイル名> テーブル
    TimeGenerated 列を 「yyyy/mm/dd hh:nn:00(日付形式)」に変換
    ComputerName 列を 「コンピューター名」 のみに変換
 ComputerList テーブル
    ComputerName 列を 「コンピューター名」 のみに変換
 時間軸 テーブル
    日時 列を 「yyyy/mm/dd hh:nn:00(日付形式)」に変換
    日時 列を 「YYYY」 に変換(年)
    日時 列を 「MM」に変換(月)
    日時 列を 「DD」に変換(日)
    日時 列を 「HH」に変換(時)
    日時 列を 「NN」に変換(分)
 イベントタイプ テーブル
    特に必要なし



                                                       102
(参考)計算列の書式
• [日時]列を「yyyy/mm/dd hh:nn:00」形式に変換

  DATEVALUE(
      YEAR([日時]) & "/" & MONTH([日時]) & "/" & DAY([日時])
  ) +
  TIMEVALUE(
      HOUR([日時]) & ":" & MINUTE([日時])
  )                                         実際には1行で記載

• [ComputerName]列からドメイン名を削除してコンピューター名に変換

  SUBSTITUTE([ComputerName],“.techfielders.com","")




                                                      103
6.リレーションシップの作成
                 ゕプリケーションログ
                     ID

 ゗ベントタ゗プ
                     Type      時間軸
   Type              日時2
                  ServerName   日時
                               日時2
                   システムログ       年
  ComputerList
                     ID
                                月
 ComputerName
                     Type       日
                     日時2
                  ServerName    時
                                分
                  セキュリテゖログ
                     ID

                     Type
                     日時2
                  ServerName
                                     104
PowerPivot でリレーションを作成するには




                        105
分析:Step1 Σ値の設定




                 106
分析:Step2 列ラベルの設定


           データ推移を参照するための軸を設定




                               107
分析:Step3 行ラベルの設定




                   108
分析:Step4 スラ゗サーの追加




                    109
便利な機能ースパークラ゗ン
 セルの中にグラフを表示




                110
EXCELが無くてもブラウザでレポートを参照




                         111
BI における SharePoint の位置づけ
 • 分析レポートの共有
 • ゕクセス権の管理
            SharePoint
        PowerPivot for
          SharePoint     Reports

                                    SSRS


            EXCEL Services
        発                           SSAS
        行 編                     発
                         レ
          集              ポ      行
                         ー
                         ト
                         作
                         成

                         Report
                         Builder

         PowerPivot for EXCEL

                                           112
PowerPivot for SharePoint へのゕクセス権設定
 SharePointの利用者にWORKBOOKの発行権限を与えておく




                                      113
114
PowerPivot ギャラリー
 SilverLightベースのGUIでレポート一覧を表示
 ブラウザを使用して分析レポートを参照、操作




                                115
SSRS と Report Builder の立場は?
 • 従来からの業務はひきつづきSSRSで
 • EXCELでは対応しづらい分野
    – レ゗ゕウトの自由度 や 文字列データの一覧 など…
 • Report Builder 3.0 は表現力がさらに向上
    – BINGMAPとの連動
       • 地図データと統計データの統合




                                   116
117
まとめ

• SSIS で手離れの良い仕組みを作りましょう
• セルフサービス BI により
  – ITPro は本来の業務に集中できます

  – IW は自身の裁量で自由に分析が行えます

  – レポートの表現力が向上します




                           118
募集「ID管理系 ブロガー」                今すぐ!

TFの集い 特別編「Active Directory おかげさまで10周年」

        2010.2.27(土)




                                     119
120

More Related Content

What's hot

45分で理解する SQL Serverでできることできないこと
45分で理解する SQL Serverでできることできないこと45分で理解する SQL Serverでできることできないこと
45分で理解する SQL Serverでできることできないこと
Insight Technology, Inc.
 

What's hot (6)

45分で理解する SQL Serverでできることできないこと
45分で理解する SQL Serverでできることできないこと45分で理解する SQL Serverでできることできないこと
45分で理解する SQL Serverでできることできないこと
 
Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用
Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用
Microsoft SQL Serverのソース・ターゲットエンドポイントとしての利用
 
Microsoft Azure ADLSのターゲットエンドポイントとしての利用
Microsoft Azure ADLSのターゲットエンドポイントとしての利用Microsoft Azure ADLSのターゲットエンドポイントとしての利用
Microsoft Azure ADLSのターゲットエンドポイントとしての利用
 
Microsoft Azure SQLマネージド インスタンスのソースとしての利用
Microsoft Azure SQLマネージド インスタンスのソースとしての利用Microsoft Azure SQLマネージド インスタンスのソースとしての利用
Microsoft Azure SQLマネージド インスタンスのソースとしての利用
 
[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...
[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...
[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...
 
Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用
Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用
Qlik Replicate - 双方向レプリケーション(Bidirectional Replication)の利用
 

Similar to SQL Server 2008 R2 BI

Sql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせ
Sql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせSql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせ
Sql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせ
Masayuki Ozawa
 
A25 sql server data page structure deep dive
A25 sql server data page structure deep diveA25 sql server data page structure deep dive
A25 sql server data page structure deep dive
Masayuki Ozawa
 
2012年1月技術ひろば
2012年1月技術ひろば2012年1月技術ひろば
2012年1月技術ひろば
貴仁 大和屋
 
待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイント待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイント
Masayuki Ozawa
 
jBOLT Ver3.2
jBOLT Ver3.2jBOLT Ver3.2
jBOLT Ver3.2
skudoh
 
C25 SQL Server 2012 概要と Microsoft の Self-Service BI by Tsuyosi Kitagawa
C25 SQL Server 2012 概要と Microsoft の Self-Service BI by  Tsuyosi KitagawaC25 SQL Server 2012 概要と Microsoft の Self-Service BI by  Tsuyosi Kitagawa
C25 SQL Server 2012 概要と Microsoft の Self-Service BI by Tsuyosi Kitagawa
Insight Technology, Inc.
 
[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani
[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani
[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani
Insight Technology, Inc.
 

Similar to SQL Server 2008 R2 BI (20)

Sql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせ
Sql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせSql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせ
Sql server 2012 の bi関連 新機能の紹介 と 次回sqlto勉強会のお知らせ
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective Datalake
 
SQLWorld★大阪#8
SQLWorld★大阪#8SQLWorld★大阪#8
SQLWorld★大阪#8
 
[db tech showcase Sapporo 2015] A26:SQL Server Data Page Structure Deep Dive ...
[db tech showcase Sapporo 2015] A26:SQL Server Data Page Structure Deep Dive ...[db tech showcase Sapporo 2015] A26:SQL Server Data Page Structure Deep Dive ...
[db tech showcase Sapporo 2015] A26:SQL Server Data Page Structure Deep Dive ...
 
A25 sql server data page structure deep dive
A25 sql server data page structure deep diveA25 sql server data page structure deep dive
A25 sql server data page structure deep dive
 
進化する帳票開発ツール「ActiveReports」の最新機能のご紹介
進化する帳票開発ツール「ActiveReports」の最新機能のご紹介進化する帳票開発ツール「ActiveReports」の最新機能のご紹介
進化する帳票開発ツール「ActiveReports」の最新機能のご紹介
 
Sql server 2019 ざっくり紹介
Sql server 2019  ざっくり紹介Sql server 2019  ざっくり紹介
Sql server 2019 ざっくり紹介
 
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
 
2012年1月技術ひろば
2012年1月技術ひろば2012年1月技術ひろば
2012年1月技術ひろば
 
待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイント待ち事象から考える、Sql server の改善ポイント
待ち事象から考える、Sql server の改善ポイント
 
SQL Azure Management and Security
SQL Azure Management and SecuritySQL Azure Management and Security
SQL Azure Management and Security
 
jBOLT Ver3.2
jBOLT Ver3.2jBOLT Ver3.2
jBOLT Ver3.2
 
[Japan Tech summit 2017] DAL 003
[Japan Tech summit 2017] DAL 003[Japan Tech summit 2017] DAL 003
[Japan Tech summit 2017] DAL 003
 
DBP-006_SQL Server 2016 Analysis Services のアーキテクチャとその活用方法
DBP-006_SQL Server 2016 Analysis Services のアーキテクチャとその活用方法DBP-006_SQL Server 2016 Analysis Services のアーキテクチャとその活用方法
DBP-006_SQL Server 2016 Analysis Services のアーキテクチャとその活用方法
 
Microsoft Azure - SQL Data Warehouse
Microsoft Azure - SQL Data WarehouseMicrosoft Azure - SQL Data Warehouse
Microsoft Azure - SQL Data Warehouse
 
C25 SQL Server 2012 概要と Microsoft の Self-Service BI by Tsuyosi Kitagawa
C25 SQL Server 2012 概要と Microsoft の Self-Service BI by  Tsuyosi KitagawaC25 SQL Server 2012 概要と Microsoft の Self-Service BI by  Tsuyosi Kitagawa
C25 SQL Server 2012 概要と Microsoft の Self-Service BI by Tsuyosi Kitagawa
 
20101112 tf web_hirookun_p
20101112 tf web_hirookun_p20101112 tf web_hirookun_p
20101112 tf web_hirookun_p
 
[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani
[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani
[D24] あなたのビジネスを変えるInfiniDBケーススタディ by Toshihide Hanatani
 
第1回関西ソーシャルゲーム勉強会 kpi発表
第1回関西ソーシャルゲーム勉強会 kpi発表第1回関西ソーシャルゲーム勉強会 kpi発表
第1回関西ソーシャルゲーム勉強会 kpi発表
 
Sql server 2016 ctp 3.0 新機能
Sql server 2016 ctp 3.0 新機能Sql server 2016 ctp 3.0 新機能
Sql server 2016 ctp 3.0 新機能
 

More from junichi anno

File Server on Azure IaaS
File Server on Azure IaaSFile Server on Azure IaaS
File Server on Azure IaaS
junichi anno
 
Vdi を より使いやすいインフラにするためのセキュリティ設計
Vdi を より使いやすいインフラにするためのセキュリティ設計Vdi を より使いやすいインフラにするためのセキュリティ設計
Vdi を より使いやすいインフラにするためのセキュリティ設計
junichi anno
 
SaaS としての IDM の役割
SaaS としての IDM の役割SaaS としての IDM の役割
SaaS としての IDM の役割
junichi anno
 

More from junichi anno (20)

V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
 
Microsoft Azure のセキュリティ
Microsoft Azure のセキュリティMicrosoft Azure のセキュリティ
Microsoft Azure のセキュリティ
 
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure ADAzure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
 
Azure AD による Web API の 保護
Azure AD による Web API の 保護 Azure AD による Web API の 保護
Azure AD による Web API の 保護
 
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
 
Azure Key Vault
Azure Key VaultAzure Key Vault
Azure Key Vault
 
個人情報を守るための アプリケーション設計(概要)
個人情報を守るためのアプリケーション設計(概要)個人情報を守るためのアプリケーション設計(概要)
個人情報を守るための アプリケーション設計(概要)
 
IoT のセキュリティアーキテクチャと実装モデル on Azure
IoT のセキュリティアーキテクチャと実装モデル on AzureIoT のセキュリティアーキテクチャと実装モデル on Azure
IoT のセキュリティアーキテクチャと実装モデル on Azure
 
DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計
DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計
DevSecOps: セキュリティ問題に迅速に対応するためのパイプライン設計
 
Azureの管理権限について
Azureの管理権限について Azureの管理権限について
Azureの管理権限について
 
Azure Active Directory 1枚資料 20151125版
Azure Active Directory 1枚資料 20151125版Azure Active Directory 1枚資料 20151125版
Azure Active Directory 1枚資料 20151125版
 
リソーステンプレート入門
リソーステンプレート入門リソーステンプレート入門
リソーステンプレート入門
 
File Server on Azure IaaS
File Server on Azure IaaSFile Server on Azure IaaS
File Server on Azure IaaS
 
Windows File Service 総復習-Windows Server 2012 R2編 第1版
Windows File Service 総復習-Windows Server 2012 R2編 第1版Windows File Service 総復習-Windows Server 2012 R2編 第1版
Windows File Service 総復習-Windows Server 2012 R2編 第1版
 
Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...
Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...
Active Directory のクラウド武装化計画 V2~"AD on Azure IaaS" or "Windows Azure Active Di...
 
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
勉強会キット Windows Server 2012 R2 評価版 BYOD 編 v2 20131020 版
 
Hyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するHyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理する
 
Vdi を より使いやすいインフラにするためのセキュリティ設計
Vdi を より使いやすいインフラにするためのセキュリティ設計Vdi を より使いやすいインフラにするためのセキュリティ設計
Vdi を より使いやすいインフラにするためのセキュリティ設計
 
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
最新Active DirectoryによるIDMaaSとハイブリッド認証基盤の実現
 
SaaS としての IDM の役割
SaaS としての IDM の役割SaaS としての IDM の役割
SaaS としての IDM の役割
 

Recently uploaded

Recently uploaded (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

SQL Server 2008 R2 BI

  • 1. BI を用いたログ管理(取込みから分析まで) ~SQL Server 2008 R2 編~ Ver 1.0 - 2010年01月29日版 マ゗クロソフト株式会社 エバンジェリスト 安納 順一 http://blogs.technet.com/junichia/ 1
  • 2. 本日の予定 13:30 – 17:15 メ゗ンセッション 17:15 - 18:00 ラ゗トニングトーク 18:00 - 19:00 懇親会 “Happy Hour” 2
  • 3. 目次 はじめに 第0章 環境の準備 第1章 SSISの基本的な使い方 〓 EXCELフゔ゗ル → SQL Server 〓 CSVフゔ゗ル → SQL Server 〓 CSVフゔ゗ル → SQL Azure 第2章 SSISによるイベントログの取り込み 〓 ゗ベントログ → SQL Server 第3章 PowerPivot を使用した分析 〓 PowerPivot for EXCEL 〓 PowerPivot for SharePoint 3
  • 4. 本セッションの内容と目的 SQL Server 2008 R2 が提供するBI機能を使用した、データ取込みか ら分析の手法について解説します。 • SSIS を使用してEXCELやCSVフゔ゗ルだけでなく、クラウド上の SQL Server(SQL Azure)や゗ベントログからのデータ取込みも可 能であることを知ってください • PowerPivot を使用することで、使い慣れたEXCEL上で容易にデータ 分析が行えることを知ってください SSIS PowerPivot 加工/補正 分析/レポート ・独自コンバーター ・スクリプト ・データの取り込み ・サードパーテゖ製品 ・CUBEの作成 ・PivotTableの作成 4
  • 5. ご注意 • 本セミナーでは リリース前の製品を使用し ております • 製品の仕様は、正式リリース時に変更され ている可能性があることをご了承ください 5
  • 6. お願い • 細かな手順を全てお話しすることができません!すみません! • 本日作成したプロジェクトと、その手順は「勉強会キット」に掲載 http://www.microsoft.com/japan/powerpro/study/ • より理解を深めるためにおすすめ ■SQL Server 2008 R2 自習書シリーズ http://www.microsoft.com/japan/sqlserver/2008/r2/prodinfo/ ■SQL Server 2008 自習書シリーズ http://technet.microsoft.com/ja-jp/sqlserver/dd610200.aspx ■SQL Server 2008 バーチャルラボ http://technet.microsoft.com/ja-jp/virtuallabs/cc879114.aspx 6
  • 7. SQL Server の BI 機能とは 7
  • 8. SQL Server BI ~ 3つの柱 必要最小限のSQL文の知識と、若干のコーディング力が求められる 【データの準備】SSIS:SQL Server Integration Service データ移入作業の可視化と整形 ・外部フゔ゗ル、データベースからの取り込み ・データ変換 【データの分析】SSAS:SQL Server Analysis Service 多次元データベースによる分析 【データの可視化】SSRS:SQL Server Reporting Service 資料作成の単純化 • レポートテンプレートの作成、表示、印刷 • パラメタ化による動的なレポートの生成 • レポートの共有 • Report Builder での容易な作成 8
  • 9. SQL Server 2008 のBI SQL Server SharePoint SSRS Report Builder SQL Business Intelligence SSIS Development Studio DB SSAS Business Intelligence Development Studio 外部データソース 9
  • 10. SQL Server 2008 R2 でBIはこう変わる 従来からの機能はそのままに、より使いやすく SQL Server SharePoint PowerPivot for SharePoint Reports BIという観点では影 が薄れるがDWH構築 には継続的に必須 SSRS EXCEL Services 発 行 編 発 レ 集 ポ 行 SQL SSIS ー DB ト 作 成 Report SSAS Builder PowerPivot for EXCEL 外部データソース 10
  • 12. デモ環境 Windows Server 2008 R2 x64 ・Active Directory ・SQL Server 2008 R2 EE x64 ・゗ンスタンス機能 SQL01 〓データベースエンジンサービス(MSSQLSERVER) ・共有機能 〓Business Intelligence Development Studio 〓Integration Service Windows Server 2008 R2 x64(ドメ゗ンに参加済み) ・SharePoint Server 2010 Beta ・SQL Server 2008 R2 EE x64 SP01 ・゗ンスタンス機能 〓データベースエンジンサービス(GEMINIBI) ・共有機能 〓Analysis Service integrated to SharePoint Windows 7(※ドメ゗ンに参加済) ・EXCEL 2010 Beta CLI01 ・SQL Server 2008 R2 PowerPivot for Excel 2010 - CTP 11 月版 ・SQL Server 2008 R2 CTP 11 月版レポート ビルダー 3.0 ・2007 Office system ドラ゗バ: データ接続コンポーネント SQL Azure 12
  • 13. デモ環境に必要なもの • Windows Server 2008 または 2008 R2 ■評価版ダウンロード [2008](最大240日) http://www.microsoft.com/japan/windowsserver2008/trial-software.mspx ※評価機関延長方法 http://support.microsoft.com/kb/948472 [2008R2](最大180日) http://technet.microsoft.com/ja-jp/evalcenter/dd459137.aspx • SQL Server 2008 R2 CTP 11月版 http://www.microsoft.com/japan/sqlserver/2008/r2/prodinfo/ downloads.mspx • SharePoint Server Enterprise 2010 Beta版 「SharePoint サーバー 2010」で検索してください • Office 2010 Beta 版 http://technet.microsoft.com/ja-jp/evalcenter/ee390818.aspx • SQL Server 2008 R2 PowerPivot for Excel 2010 - CTP 11 月版 x64 http://go.microsoft.com/fwlink/?LinkID=168584&clcid=0x411 x86 http://go.microsoft.com/fwlink/?LinkID=168583&clcid=0x411 • SQL Server 2008 R2 CTP 11 月版レポート ビルダー 3.0 「 SQL Server 2008 R2 CTP 11 月版レポート ビルダー 3.0」で検索してください • OLEDBドライバ(32ビット) 2007 Office system ドライバ: データ接続コンポーネント ※検索してください! 13
  • 14. はじめの一歩 使用するツール • SQL Server Business Intelligence Development Studio • SQL Server Management Studio はじめにやること • SQL Server Management Studio を起動 • SQL Server Business Intelligence Development Studioを起動 Access/EXCELから読み込む場合には • SQL Server Business Intelligence Development Studioの[プロジェクト]- [プロパテゖ]-[デバッグ]で Run64bitRuntime = False に設定 ※OLEDBドラ゗バがx64に対応していないため 14
  • 17. やりたいこと サンプルデータ(郵便番号データ)をSQL Serverに取り込む 郵便番号 全国一括データ 初回 CSV/XSLX 郵便番号 全国差分-削除データ 差分削除 CSV/XSLX 定例 郵便番号 全国差分-追加データ CSV/XLSX 17
  • 18. デモデータ「郵便番号データ」の構成と構造 日本郵便が提供:http://www.post.japanpost.jp/zipcode/dl/kogaki.html 一括データ:最終差分まで吸収されたデータ(毎月末に更新) ├ 県別(<件名>_ALL.csv) └ 全国(KEN_ALL.csv)(約12万件) 差分データ:前回からの差分(毎月末にリリース) ├ 新規追加データ(add_xxxx.csv) └ 廃止データ(del_xxxx.csv) dantaicode 全国地方公共団体コード(JIS X0401, X0402)(5桁) 半角数字 pcode5 (旧)郵便番号(5桁) 半角文字列(空白あり) pcode7 郵便番号(7桁) 半角文字列(先頭0あり) ktodofuken 都道府県名 半角カタカナ(コード順に掲載) kshikuchoson 市区町村名 半角カタカナ(コード順に掲載) kchoiki 町域名 半角カタカナ(五十音順に掲載) todofuken 都道府県名 漢字(コード順に掲載) shikuchoson 市区町村名 漢字(コード順に掲載) choiki 町域名 漢字(五十音順に掲載) flg1 一町域が二以上の郵便番号で表される場合の表示 1-該当,0-該当せず flg2 小字毎に番地が起番されている町域の表示 1-該当,0-は該当せず flg3 丁目を有する町域の場合の表示 1-該当,0-該当せず flg4 一つの郵便番号で二以上の町域を表す場合の表示 1-該当,0-該当せず) flg5 更新の表示 0-変更なし,1-変更あり,2-廃止(廃止データのみ使用) flg6 変更理由 0-変更なし,1-市区町政・分区・政令指定都市施行,2-住居表示の実施, 3-区画整理,4-郵便区調整等,5-訂正,6-廃止(廃止データのみ使用) 18
  • 20. 一括゗ンポートの処理の流れ 変換元 変換先 SSIS 変換プロセス 郵便番号 コピー 接 接 全国一括データ 続 続 マ テ テ カ マ ネ ネ ー ー ー ラ ー XLS/XLSX ジ ブ ブ ム ジ ャ ル ル の ャ ( 削 作 ( 変 マ 変 換 除 成 ッ 換 元 プ 先 ) ) 20
  • 21. SSIS゗ンポートおよびエクスポートウゖザード • ウゖザードに回答するだけで、簡単なデータフローを作成することができる • Excel を SQL Server に変換するだけならば1分で実装可能 ウゖザードの流れ データソース(Excel)を選択 変換先デバ゗ス(SQL Server)を選択 データフローの設定 変換プロセス テーブル削除実施の有無 コピー テーブル作成の有無 接 テ テ カ 接 続 続 データ新規?/追加?/削除? マ ー ー ラ 新 マ ブ ブ ム 規 コピー元カラムとコピー先カラムのマップ ネ ル ル の コ ネ ー 削 作 マ ピ ー ジ 除 成 ッ ー ジ ャ プ ャ 21
  • 24. SSIS゗ンポートおよびエクスポートウゖザード (参考)コピー方法の選択 全体を複製する 一部を複製する EXCELの場合はシート名 24
  • 25. SSIS゗ンポートおよびエクスポートウゖザード (参考)コピー元テーブルの選択 コピー先のテーブルを指定 複製したいテーブル(Excel 既定の名前は変換元と同じになるが の場合にはシート)を選択 変更することもできる 作成するテーブルの詳細設定 25 次ページへ
  • 27. SSIS デザ゗ナーで全体のフローを確認 SSISデザ゗ナー 制御タブ データフロー 移入処理の全体制御を行う データセット間のデータフ ローを制御する 変換プロセス コピー 接 テ テ カ 接 続 ー ー ラ 新 続 マ ブ ブ ム 規 マ ネ ル ル の コ ネ ー 削 作 マ ピ ー ジ 除 成 ッ ー ジ ャ プ ャ 27
  • 29. EXCELとの違い 入力フゔ゗ルの属性を定義する必要がある ※64ビット環境で使用可能 • データソースとして「フラットファイルソース」を選択 • 入力フゔ゗ルの特性を設定する • コードページ • フゔ゗ルの種類 • CSV/固定幅/幅合わせなし(「行区切り文字」で区切る) • カラムの装飾文字 • ヘッダー関連 • ヘッダーの区切り文字 • ヘッダーの行数 • カラム(列)の定義 • 行の区切り文字(改行文字 等) • 列(カラム)の区切り文字 • 列の属性(データ型、桁数 等) 29
  • 32. SSIS゗ンポートおよびエクスポートウゖザード(CSV→SQL Server) (参考)データソースの選択(詳細設定) 各列の属性 ここで定義した値に沿って変換先テー ブルの属性が決定する これを使って事前に各列の属性を予測 しておき、あとから微調整 32
  • 33. SSIS゗ンポートおよびエクスポートウゖザード(CSV→SQL Server) (参考)コピー元テーブルを選択(列マップ) カラム名も合わせてくれる 1バ゗ト符号付整数(DT_I1) 2バ゗ト符号付整数(DT_I2) ↓ smallint 文字列(DT_STR) ↓ varchar 33
  • 34. SSIS゗ンポートおよびエクスポートウゖザード(CSV→SQL Server) (参考)データ型マッピングの確認 変換を伴う場合にはエラー処理 についても設定が必要 失敗 or 無視 34
  • 35. SSIS デザ゗ナーで全体のフローを確認 制御タブ データフロー 変換に関する処 理はこの中に 35
  • 36. データフローの構成要素 変換元 変換 変換先 出 出 外 力 力 部 列 列 列 外 入 入 部 力 力 列 エ 列 エ 列 エ ラ ラ ラ ー ー ー 出 出 出 力 力 力 変換先 変換先 変換先 外 外 外 部 部 部 列 列 列 入 入 入 力 力 力 列 エ 列 エ 列 エ ラ ラ ラ ー ー ー 出 出 出 力 力 力 36
  • 38. エラー処理 エラー処理の種類 • エラーを無視する • エラーコンポーネントに渡す • ゗ベントハンドラーを使用して処理 • エラー行をリダ゗レクト • エラーが発生した「行」をリダ゗レクトして別のテーブルやフゔ゗ル に保存する どの時点でエラーを捕捉するのかを検討することが重要 カラム単位に設定できる 38
  • 39. 不備のある入力データを出力 • 出力先として「変換先」を指定 • 入力データの不備を捕捉するので「変換元」のエラーを取得 • 変換元の[エラー出力]先を「行リダ゗レクト」に設定 変換元 出力列で定義されている 出 「各列の属性(データ型,長さなど)」 力 に合致しない場合にはエラー出力へ 列 リダ゗レクトされる 外 部 列 エ ラ ー 出 力 39
  • 40. ErrorCode と ErrorColumn ErrorCode : エラーコード ErrorColumn : エラーが発生した出力列の ID 40
  • 41. 差分データを削除 郵便番号データは月に1度、差分データ(削除データ一覧)が発行される 変換元 変換先 SSIS 変換プロセス 郵便番号 全国差分 既存 行削除 削除データ 接 接 続 続 マ ネ 入力行に合致する マ ネ CSV ー ジ 行を検索して削除 ー ジ ャ ( する ャ ( 変 変 換 換 元 先 ) ) 41
  • 42. OLE DB コマンド • 条件に一致した行を更新/削除 • パラメータ化されたSQL文を指定 (例)KEN_ALL テーブルから、以下の条件に合致する行を削除 “dantaiCode” = “入力行のCode” “pcode7” = “入力行のcode7” Delete from KEN_ALL where “dantaiCode” = ? and “pcode7” = ? 変換元の列と対応付ける 42
  • 43. おぼえておきたい処理 • 抽出行のコピー  SQL文に合致する行のみ処理 • 文字マップ  ひらがな/カタカナ/全角/半角 変換 • 派生列変換  カラム結合して新しいカラムを生成 • 条件分岐  条件に合致した入力行ごとにコピー先を変える • マルチキャスト変換  1行を複数のテーブルにコピー • 文字列の置換 • カラム内文字列の特定文字を置き換え 43
  • 44. 処理の自動化 プロセスを実装し終えたら ・[ビルド]する - binフォルダに .dtsx フゔ゗ルが作成される ・SQL Server Agent ジョブとして登録 - SQL Server Agent サービスを起動しておく(自動起動にする) - .dtsxフゔ゗ル(パッケージフゔ゗ル)を登録 44
  • 45. 性能監視とチューニング データフローエンジンのパフォーマンスの監視 http://msdn.microsoft.com/ja-jp/library/ms137622(SQL.105).aspx データフローのパドーマンスの向上 http://msdn.microsoft.com/ja-jp/library/ms141301(SQL.105).aspx 45
  • 47. 一括゗ンポートの処理の流れ 流れはSQL Server と何も変わらない 変換元 SSIS 変換先 変換プロセス 郵便番号 コピー 接 接 全国一括データ 続 続 マ テ テ カ マ ネ ー ー とラ ネ ー デム ー CSV ジ ブ ブ ジ ャ ル ル ーの ャ ( 削 作 タマ ( 変 除 成 変ッ 変 換 換プ 換 SQL Azure 元 先 ) ) 47
  • 48. SQL Azureとの接続 .NETプロバ゗ダーを使用 する SQL Azureのホスト名を 指定する Windows統合認証は使 えないので、SQL Azure のID/パスワードを使用 する 48
  • 49. SQL Azure のサーバー名をチェック http://sql.azure.com/ これがサーバー名 49
  • 50. 日本語の取り扱い~カラムの定義 IF NOT EXISTS(SELECT * FROM sys.schemas WHERE name = N'dbo') BEGIN EXEC(N'CREATE SCHEMA "dbo"') END CREATE TABLE "dbo"."KEN_ALL" ( "ID" int Identity(1,1) PRIMARY KEY, "DantaiCode" int, "PCode5" nvarchar(5), "PCode7" nvarchar(7), "KTodofuken" nvarchar(255) COLLATE Japanese_CI_AS, "KShikuchoson" nvarchar(255) COLLATE Japanese_CI_AS, "KAzana" nvarchar(255) COLLATE Japanese_CI_AS, "Todofuken" nvarchar(255) COLLATE Japanese_CI_AS, "Shikuchoson" nvarchar(255) COLLATE Japanese_CI_AS, "Azana" nvarchar(255) COLLATE Japanese_CI_AS, "Flg1" smallint, "Flg2" smallint, "Flg3" smallint, "Flg4" smallint, "Flg5" smallint, "Flg6" smallint ) GO 50
  • 53. 構築するシステム゗メージ データベース:LogReport SSIS テーブル ログを収集する コンピューター とログフゔ゗ル ComputerList のリスト ネットワーク上のWindows Server または Windows Client から、SSISのWMIデータリーダー ログフゔ゗ルご を使用して゗ベントログを収集し、SQL Server Eventlog_Security とにテーブルを 2008 / R2 に保存する。 作成 Eventlog_Application SSISで作成したパッケージは定期的に実行するもの Eventlog_System とし、前回実行時からの差分は゗ベントログの TimeWritten を基準にして判断するものとする。 53
  • 54. ソース:Eventlogレコードの形式 Category カテゴリ番号 CategoryString カテゴリ名 ComputerName ゗ベントを生成したコンピュータ名 Data ゗ベントの付帯情報 EventCode Uint16 形式の゗ベントID EventIdentifier Uint32 形式の゗ベントID InsertionStrings ゗ベントの付帯情報 Logfile ログフゔ゗ルの名前(System,Application,Security など) ゗ベントの説明文。4000文字(bstr)を超える可能性あり。 Message シングルクオーテーションが含まれることが多い。 RecordNumber ゗ベントレコードの通番 int32(max 2,147,483,647 ) SourceName ゗ベントを生成したソースプロセス(MSSQL,MSInstaller など) TimeGenerated ゗ベントが発生した日時。標準時で生成。 TimeWritten ゗ベントが書き込まれた日時。標準時で生成。 Type ゗ベントのタ゗プ(情報、エラー、警告、成功の監査、失敗の監査) User ゗ベントを発生させたユーザー 54
  • 55. テーブル構成 ComputerList ComputerName(FQDN名) ソースコンピュータのリスト LogFileName EventLogData_<LogfileName> Number(int)(key) Category(nvarchar(50)) <logfileName> には、Application, CategoryString(nvarchar(50)) System, Security などが入る ComputerName(nvarchar(50)) Data(nvarchar(max)) Server01 Server02 EventCode(nvarchar(50)) EventIdentifier(nvarchar(50)) InsertionStrings(nvarchar(50)) Logfile(nvarchar(50)) Message(nvarchar(max)) RecordNumber(int) SourceName(nvarchar(max)) TimeGenerated(datetime) EventLogData EventLogData EventLogData TimeWritten(datetime) _System _Application _Security Type(nvarchar(50)) User(nvarchar(50)) 55
  • 56. (参考)゗ベントログを取得するスクリプト例 strComputer = “.” Set objService = GetObject(“winmgmts:¥¥“ & strComputer & “¥root¥cimv2”) Set objEvtSet = objService.ExecQuery _ ("Select * From Win32_NTLogEvent Where Logfile='System'") For Each e In objEvtSet wscript.echo e.ComputerName & "," & e.EventCode Next 56
  • 57. Logfile 属性について 使用可能なLogfile属性は、以下のコマンドで調査できる C:¥> wmic nteventlog list brief FileSize LogfileName Name NumberOfRecords 6361088 Application C:¥ ¥Logs¥Application.evtx 8022 69632 HardwareEvents C:¥ ¥Logs¥HardwareEvents.evtx 0 69632 Internet Explorer C:¥ ¥Logs¥Internet Explorer.evtx 0 69632 Key Management Service C:¥ ¥Logs¥Key Management Service.evtx 0 69632 Media Center C:¥ ¥Logs¥Media Center.evtx 0 1052672 OAlerts C:¥ ¥Logs¥OAlerts.evtx 254 69632 ODiag C:¥ ¥Logs¥ODiag.evtx 0 69632 Operations Manager C:¥ ¥Logs¥Operations Manager.evtx 120 69632 OSession C:¥ ¥Logs¥OSession.evtx 4 30740480 Security C:¥ ¥Logs¥Security.evtx 40359 8458240 System C:¥ ¥Logs¥System.evtx 20623 1118208 Windows PowerShell C:¥ ¥Logs¥Windows PowerShell.evtx 57
  • 60. 制御フローを考えてみる 開始 参照 ComputerList ソース取得 取り込みソースのリスト ソースごとに処理を繰り返し テーブル作成 S S 取り込み範囲のチェック I S ゗ベントログを一括取得 レコードを1件ずつ取り出し Insert 文を生成 Insert into … EventLogData_<logfilename> 終了 60
  • 61. 制御フローを作成するには • 部品(制御フロー項目)をデザ゗ン画面にドラッグ&ドロップ • 各部品のパラメタを設定する • 部品同士を矢印で接続して「フロー」を決める 事前に処理の流れを決めておくことが重要 開始 ソース取得 ソースごとに処理を繰り返し テーブル作成 S S 取り込み範囲のチェック I ゗ベントログを一括取得 S レコードごとに Insert 繰り返し Insert into … 終了 61
  • 62. 使用する部品(制御フロー項目) • SQL文を発行するための部品 • 「接続マネージャー」の定義が必要 • 処理を繰り返すための部品 • フゔ゗ルや変数、レコードセットの読み込みに使用 • 処理回数が未定の場合に使用する • VB.NETまたはC#を使用して柔軟な処理を実装したい場合に使用 • 文字列の細かな処理などに使用すると便利 • WMIを使用した処理結果を受け取る場合に使用 • 今回は゗ベントログの取得に使用している ちなみに • EXEコマンドを実行したい場合には • unix/linux 等からログを収集する場合には 62
  • 63. 制御フロー項目のI/O • 接続マネージャー • 変数 • Expression属性 63
  • 64. 制御フロー項目 接続マネージャー 各項目には、入力と出力を設定する IN OUT 直接入力 部品 データベース データベース フゔ゗ル フゔ゗ル 変数 変数 (例) SQL文 結果セット ループの中で処理する 結果のレコードセットを変 場合に、SQL文を変え 数に格納し、次の処理で使 ながら処理が可能 用できる 64
  • 66. 変数 処理フローの中で使用できる、俗にいう「変数」 スコープの設定が可能(プロジェクト全体/ループ内/部品内) 選択可能な型 Boolean/Byte/Char/DateTime/DBNull/Doube/Int16/Int32/ Int64/Object/SByte/Single/String/Uint32/UInt64 TIPS • 受け取る値の型がよくわからない場合には、「Object」型を選 択しておくとよい • Expressions属性により、変数の値を動的に設定可能 超便利! 66
  • 67. Expressions 属性 • 部品(制御フロー項目)、接続マネージャー、変数などに用意されてい る属性の1つ • Expression(式)を記載することで、指定した他の属性にダ゗ナミック に値を代入することができる (例)SQL実行タスク SqlStatementSource属性に はSQL文を記載するが、処理 によって接続先のテーブルを 変えたい場合がある。 Expressions属性を使用する ことで、 SqlStatementSourceの値を 部品が呼ばれる都度変更する ことができる。 67
  • 68. Expressions 属性の使用例 "IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[EventLogData_"+ @[User::tmpLogfileName] +"]') AND type in (N'U') ) "+ “CREATE TABLE [dbo].[EventLogData_”+ @[User::tmpLogfileName] +“] ( [Number] [int] IDENTITY(1,1) NOT NULL, [Category] [nvarchar](50) NULL, テーブル名に、変数 [CategoryString] [nvarchar](50) NULL, @[User::tmpLogfileName] を [ComputerName] [nvarchar](50) NULL, 使用することで、部品が呼ばれるた [Data] [nvarchar](max) NULL, びに、異なるテーブルに対して処理 ・ を行うことができる ・ ・ 68
  • 69. スクリプトタスク内での変数の使用 スクリプト内で変数取り扱うことで、VB.NETやC#を使用した柔軟な加工が可能 (例)DateTimeカラムに保存する前にDateTime形式に変換 Dim strTimeGenerated As String = “19000101 00:00:00” If Not IsDBNull (Dts.Variables(“User::TimeGenerated”).Value) Then strTimeGenerated = Dts.Variables(“User::TimeGenerated”).Value strTimeGenerated = Mid(strTimeGenerated , 1, 8) & “ “ & _ Mid(strTimeGenerated , 9, 2) & “ “ & _ Mid(strTimeGenerated , 11, 2) & “ “ & _ Mid(strTimeGenerated , 13, 2) 69
  • 70. 70
  • 71. 制御フローの確認 開始 参照 ComputerList 1 ソース取得 取り込みソースのリスト 2 ソースごとに処理を繰り返し 3 テーブル作成 S S 4 取り込み範囲のチェック I S 5 ゗ベントログを一括取得 6 レコードを1件ずつ取り出し 7 Insert 文を生成 8 Insert into … EventLogData_<logfilename> 終了 71
  • 72. 処理1:ソース(コンピュータ一覧)の取得 ゗ベントログの取り込み元一覧を取得する SQLStatement 接 続 SQL マ タ Select ComputerName,LogfileName ネ ス From dbo.ComputerList ー ク ジ ャ dbo.ComputerList User::ComputerList ADO列挙子 (データセット) 結果セットを変数に保存 72
  • 73. 処理2:ソースごとに処理を繰り返し Foreachコンテナの User::ComputerList 入力パラメータ ADO列挙子 (データセット) ForEach ループ User::tmpComputerName User::tmpLogfileName テーブル作成 取り込み範囲のチェック ゗ベントログを一括取得 レコードを1件ずつ取り出し Foreach Insert 文を生成 ル Insert into … ー プ 73
  • 74. Foreach の引数「User::ComputerList」について ComputerList 変数は データセットであるため、これを1行ずつ取り込むため の変数を定義し、ComputerList から読み込んだレコードの格納先を指定する。 なお、ComputerListは1行あたり2列(ComputerName, LogFileName)が含 まれるので、2つの変数を定義する必要がある。 User::ComputerList 列0 列1 行0 ComputerName LogFileName 行1 ComputerName LogFileName 列0 User::ComputerName 列1 User::LogFileName 74
  • 75. 処理3:テーブルを作成 <LogfileName>゗ベントログを格納するテーブルが無い場合には作成する User::tmpComputerName User::tmpLogfileName Expressions(SQLStatement) "IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = dbo.Eventlog OBJECT_ID(N'[dbo].[EventLogData_"+ @[User::tmpLogfileName] +"]') AND type in (N'U') ) "+ 接 続 "CREATE TABLE [dbo].[EventLogData_"+ @[User::tmpLogfileName] +"] マ ([Number] [int] IDENTITY(1,1) NOT NULL, ネ SQL [Category] [nvarchar](50) NULL, ー [CategoryString] [nvarchar](50) NULL, ジ 文 [ComputerName] [nvarchar](50) NULL, ャ タ [Data] [nvarchar](max) NULL, [EventCode] [nvarchar](50) ・ ス ・ ク [User] [nvarchar](50) NULL, CONSTRAINT [PK_EventLogData_"+ @[User::tmpLogfileName] +"] PRIMARY KEY CLUSTERED ( [Number] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 完全なSQL文は ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]" 手順書で 75
  • 76. 処理4:取り込み範囲のチェック SQLタスクの入力パラメータ 変数はスコープ内であ User::tmpComputerName ればどこででも使える User::tmpLogfileName Expressions(SQLStatement) 接 dbo.Eventlog SQL Select MAX(TimeWritten) as MaxTimeWritten 続 from [EventLog].[dbo].[EventLogData” + マ タ @[User::tmpLogfileName] + “] ネ ス Where [ComputerName] Like ‘“ + ー ク ジ @[User::tmpComputerName]” + “’%” ャ テーブルには複数のコン ピュータの゗ベントログ User::MaxTimeWritten が格納されていることに 戻り値 注意 76
  • 77. 処理4:゗ベントログを一括取得 入力パラメータ User::tmpComputerName User::tmpLogfileName User::MaxTimeWritten 接続マネージャ(WMI) Expression(ConnectionString) WQLQuerySource 属性値に変数を User::ConnectionString 使用できる WMI User::WQL Expression(Value) デ Expression(Value) “ServerName=¥¥¥¥”+@ ー “Select * from Win32_NTLogEvent [User::tmpComputerNa タ where logfile=“ + me]+”;Namespace=¥¥ro リ @[User::tmpLogfileName] + “’ and ot¥¥cimv2;UserNtAuth;U ー serName=;” TimeWritten > “ + (DT_WSTR 20) ダ ー @(User::MaxTimeWritten) Expressionsの キャストが可能 中では「¥」は 制御記号 User::EventData 77
  • 78. 処理5:レコードを1件ずつ取り出し 取り出した値が見え User::EventData ずらい場合には Object形式にしてお くと便利 ForEach ループ User::Category User::CategoryString User::ComputerName User::Type User::User Insert 文を生成 Insert into を実行 78
  • 79. 処理6:Insert 文を生成 SQL文を生成するにあたり、各値をSQL Serverに取り込み可能な形式に整形する User::Category User::User 変数の値がNullかどう かをチェックしてから 取り出す Dim strCategory As String = "" If Not IsDBNull(Dts.Variables("User::Category").Value) Then strCategory = Dts.Variables("User::Category").Value.ToString End If Messageにはシングルクオーテーションが 含まれているので置き換え Script Dim strMessage As String = "" If Not IsDBNull(Dts.Variables("User::Message").Value) Then タ strMessage = Dts.Variables("User::Message").Value.ToString ス strMessage = Replace(strMessage, "'", "-") ク End If 79 次のページに続く
  • 80. DateTime列に取り込めるように整形 Dim strTimeGenerated As String = "19000101 00:00:00" If Not IsDBNull(Dts.Variables("User::TimeGenerated").Value) Then strTimeGenerated = Dts.Variables("User::TimeGenerated").Value.ToString strTimeGenerated = Mid(strTimeGenerated, 1, 8) & " " & _ Mid(strTimeGenerated, 9, 2) & ":" & _ Mid(strTimeGenerated, 11, 2) & ":" & _ Script Mid(strTimeGenerated, 13, 2) End If SQL文を生成 タ ス Dim strSQL As String = "INSERT INTO [EventLog].[dbo].[EventLogData_" & ク strLogfile & "] ([Category]" & _ ",[CategoryString]" & _ ",[ComputerName]" & _ " VALUES('" & strCategory & "'," & _ "'" & strCategoryString & "'," & _ "'" & strComputerName & "'," & _ Dts.Variables("User::InsertSQL").Value = strSQL User::InsertSQL 80
  • 81. 処理7:Insert Into を実行 User::InsertSQL SQLStatement User::InsertSQL Value INSERT INTO [EventLog].[dbo].[EventLogData_Application] dbo.Eventlog ([Category],[CategoryString],[ComputerName],[D 接 ata],[EventCode],[EventIdentifier],[EventType],[In SQL 続 sertionStrings],[LogFile],[Message],[RecordNumb マ タ ') er],[SourceName],[TimeGenerated],[TimeWritten] ネ ス ,[Type],[User]) VALUES('0','','TF-SQL01- ー ク 01.t6303.contoso.co.jp','','12290','1073819650','3' ジ ャ ,'System.String[]','Application','Package "Package" has been cancelled.',3205,'SQLISPackage100','20090923 03:23:31','20090923 03:23:31','情報 ','T6303¥administrator') 81
  • 83. 「BIを支えるIT」が抱える問題 • BIを求めているのはだれ? – 経営層またはビジネス管理層、ただし実際に分析するのは IW ※決して ITPro や DEV ではない • BIがうまく普及しない要因は? – ツールの操作性とプラットフォームの柔軟性 – データベース管理者のBIに関するスキル – データの散在による分析のための準備 • BIを取り巻く環境の変化 – ビジネススピード – 分析データの散在とDB統合の煩雑さ • 複数プラットフォーム(SQLSV、ORACLE、その他) • エンドユーザーコンピューテゖングの浸透(EXCELやテキストデータ) • WEB上のデータ • クラウドの出現 – システム管理者へのニーズ • システムの安定稼働 83
  • 84. 「BIを支えるIT」に必要なもの IWの裁量を生かすプラットフォーム IWのスキルを生かす操作性 セルフサービス BI 84
  • 85. PowerPivot(CodeName Gemini)とは PowerPivot for EXCEL 2010 • 使い慣れた Excel に Data Analysis エンジンを組み込み • 基本操作はピボットテーブル • 64bit インメモリ エンジンと圧縮ゕルゴリズムによる高速処理 • SQL Server SSASを介さず、さまざまなデータソースへ直接接続 • 100万件を超えるデータに対応(EXCELの上限は1,048,576件) PowerPivot for SharePoint 2010 ※Excel Services 用の PowerPivot • PowerPivot を使用したEXCELシートの共有 • EXCEL サービスに PowerPivot 処理機能を付加 • ブラウザを使用して PowerPivot を使用したEXCELブックを表示 • Silverlight ベースの PowerPivot ギャラリー • 保存されたBOOKは ReportBuilder で編集しレポートして発行 • サーバー負荷を監視するためのダッシュボード データベース管理者が分析用のデータを準備することなく、 Information Worker にすべての作業を委託できる 85
  • 88. PowerPivotの利用゗メージ オンプレミス ローカルPC CSV SQL Server 2008 R2 SQL Azure CUBEの作成 PowerPivot ピボットテーブル 88
  • 89. PowerPivotが埋め込まれたXLSXフゔ゗ルのブラウズ CUBE ごと保存される CUBEの作成 EXCEL 2010 PCのリソースを使用 PowerPivot XSLX Internet Explorer SPのリソースを使用 SharePoint with PowerPivot ピボットテーブル 89
  • 90. PowerPivot for EXCEL 2010 を使用するには [フゔ゗ル]メニューから[オプション] を選択し[ゕド゗ン]をクリック 「管理」から「COMゕド゗ン」を選択し、[設定]をクリック [Microsoft.AnalysisSerice.Modeler.FieldList.AddinIntegration]を選択 90
  • 91. どうしてもPowerPivotを゗ンストールできない場合 【SQL】PowerPivot for EXCEL 2010 がうまくインストールできない場合の対処 http://blogs.technet.com/junichia/archive/2010/01/20/3306943.aspx 91
  • 92. PowerPivot 利用手順 1. 計画 2. 分析軸用のテーブルを準備 3. Excel 2010 から PowerPivotウゖンドウを 起動 4. 分析に使用するテーブルを読み込み 5. 計算列の追加 6. リレーションシップの作成 7. 分析を実行(ピボットテーブルを作成) 8. 保存 & 発行 92
  • 93. 1.計画 • メジャー(尺度) – 分析したい要素 (例)エラーの数、CPU負荷、空メモリ • ディメンジョン(分析軸) – メジャーをマップする軸 (例)日時、サーバー名、゗ベントソース、゗ベントタ゗プ – 一意の値 日時 エラー 0 0 0 0 Cmputer Source 重大 0 0 0 0 Name Name CPU 0 0 0 0 メモリ 0 0 0 0 93
  • 94. ゗ベントログ分析の計画 • それぞれのデータの関連性を機械的に見出すのは難しい • 時間を軸に゗ベントやパフォーマンスを関連付ける 日時 パフォーマンス System Application Security ・・・・・・・・ ログ ゗ベントタ゗プ コンピューター名 94
  • 95. 2.分析軸用テーブルを作成 EXCELで以下のテーブルを作成する 日時 • 時間軸テーブル 2010/1/1 00:00:00 ⁃ ゗ベントログテーブルを時系列に関連付けるために使用 2010/1/1 00:01:00 ⁃ 形式 yyyy/mm/dd hh:nn:00 2010/1/1 00:02:00 ⁃ 1年分作成すると 60*24*365 = 525600 行 ・ ⁃ PowerPivot取込後に計算列(年、月、日、時、分)を作成 ・ • ログタイプテーブル ログタイプ ⁃ ゗ベントログを種別ごとに関連づけるために使用 情報 ⁃ レコードは「情報」「警告」「エラー」「重大」 警告 エラー 重大 • コンピューター名テーブル コンピューター名 ⁃ ゗ベントログ同志および゗ベントログとパフォーマンスロ sql01.techfielders.com グを関連づけるために使用 ⁃ FQDN名でレコードを作成 cl01.techfielders.com ⁃ PowerPivot取込後に計算列(コンピューター名)を作成 ・ ・ 95
  • 97. 3.Excel 2010 から PowerPivot を 起動 作成したCUBEをもとに ピボットテーブル作成 この画面でCUBEを作成する 97
  • 98. 4.分析に使用するテーブルを読み込み • SQL Server より – ゗ベントログ テーブル • Eventlog_System • Eventlog_Application – コンピューターリスト テーブル • ComputerList • EXCEL より – 時間軸 シート – ゗ベントタ゗プ シート 98
  • 99. (TIPS)SQL Server からの読み込み SQL Server からの読み込みでエラーが出る場合には、 「.Net Framework Data Provider for SQL Server 」を使用 99
  • 100. (注意)PowerPivotの留意点ー利用者のゕクセス権 【SQL】PowerPivotを使用してデータベースに接続するとアクセスが拒否される http://blogs.technet.com/junichia/archive/2010/01/21/3307187.aspx • (できれば)AD統合認証を使用 • ADユーザーに対してDBへのゕクセス権を付与 – 3段階のゕクセス権に注意 • 第1段階:SQL Serverへのログ゗ン権限 • 第2段階:データベースへの接続権限 • 第3段階:テーブルの「選択(Select)」権限 100
  • 101. 5.計算列の追加 • 分析に使用する数値を既存の列をゕレンジして算出する • (例)受注金額 =「受注単価」列 × 「受注数量」列 受注コード 品番 受注単価 受注数量 受注金額 9999999 999 9999 999 999999 =[受注単価]*[受注数量] • リレーションシップを作成するためにテーブル間で値の形式を合わせる • (例)日時のリレーションを構築するために、粒度を合わせる 日時 日時2 2010/01/01 9:21:15 2010/01/01 9:21:00 TimeGenerated 日時2 2010/01/01 9:21:59 2010/01/01 9:21:00 101
  • 102. 今回のシステムで追加する列  Eventlog_<ログファイル名> テーブル  TimeGenerated 列を 「yyyy/mm/dd hh:nn:00(日付形式)」に変換  ComputerName 列を 「コンピューター名」 のみに変換  ComputerList テーブル  ComputerName 列を 「コンピューター名」 のみに変換  時間軸 テーブル  日時 列を 「yyyy/mm/dd hh:nn:00(日付形式)」に変換  日時 列を 「YYYY」 に変換(年)  日時 列を 「MM」に変換(月)  日時 列を 「DD」に変換(日)  日時 列を 「HH」に変換(時)  日時 列を 「NN」に変換(分)  イベントタイプ テーブル  特に必要なし 102
  • 103. (参考)計算列の書式 • [日時]列を「yyyy/mm/dd hh:nn:00」形式に変換 DATEVALUE( YEAR([日時]) & "/" & MONTH([日時]) & "/" & DAY([日時]) ) + TIMEVALUE( HOUR([日時]) & ":" & MINUTE([日時]) ) 実際には1行で記載 • [ComputerName]列からドメイン名を削除してコンピューター名に変換 SUBSTITUTE([ComputerName],“.techfielders.com","") 103
  • 104. 6.リレーションシップの作成 ゕプリケーションログ ID ゗ベントタ゗プ Type 時間軸 Type 日時2 ServerName 日時 日時2 システムログ 年 ComputerList ID 月 ComputerName Type 日 日時2 ServerName 時 分 セキュリテゖログ ID Type 日時2 ServerName 104
  • 107. 分析:Step2 列ラベルの設定 データ推移を参照するための軸を設定 107
  • 112. BI における SharePoint の位置づけ • 分析レポートの共有 • ゕクセス権の管理 SharePoint PowerPivot for SharePoint Reports SSRS EXCEL Services 発 SSAS 行 編 発 レ 集 ポ 行 ー ト 作 成 Report Builder PowerPivot for EXCEL 112
  • 113. PowerPivot for SharePoint へのゕクセス権設定 SharePointの利用者にWORKBOOKの発行権限を与えておく 113
  • 114. 114
  • 115. PowerPivot ギャラリー SilverLightベースのGUIでレポート一覧を表示 ブラウザを使用して分析レポートを参照、操作 115
  • 116. SSRS と Report Builder の立場は? • 従来からの業務はひきつづきSSRSで • EXCELでは対応しづらい分野 – レ゗ゕウトの自由度 や 文字列データの一覧 など… • Report Builder 3.0 は表現力がさらに向上 – BINGMAPとの連動 • 地図データと統計データの統合 116
  • 117. 117
  • 118. まとめ • SSIS で手離れの良い仕組みを作りましょう • セルフサービス BI により – ITPro は本来の業務に集中できます – IW は自身の裁量で自由に分析が行えます – レポートの表現力が向上します 118
  • 119. 募集「ID管理系 ブロガー」 今すぐ! TFの集い 特別編「Active Directory おかげさまで10周年」 2010.2.27(土) 119
  • 120. 120