sql server 2008 r2 bi

120
1 BI を用いたログ管理(取込みから分析まで) ~SQL Server 2008 R2 編~ マクロソフト株式会社 エバンジェリスト 安納 順一 http://blogs.technet.com/junichia/ Ver 1.0 - 2010年01月29日版

Upload: junichi-anno

Post on 28-May-2015

5.390 views

Category:

Technology


22 download

DESCRIPTION

SQL Server 2008 R2 CTP Nov. を使用したBIに関する説明資料です。イベントログからSQL Serverにデータを流し込んだり、PowerPivotを使用してイベントを分析したりといった内容です。

TRANSCRIPT

Page 1: SQL Server 2008 R2 BI

1

BI を用いたログ管理(取込みから分析まで) ~SQL Server 2008 R2 編~

マクロソフト株式会社

エバンジェリスト

安納 順一

http://blogs.technet.com/junichia/

Ver 1.0 - 2010年01月29日版

Page 2: SQL Server 2008 R2 BI

2 2

本日の予定

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

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

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

Page 3: SQL Server 2008 R2 BI

3 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

Page 4: SQL Server 2008 R2 BI

4 4

本セッションの内容と目的 SQL Server 2008 R2 が提供するBI機能を使用した、データ取込みから分析の手法について解説します。 • SSIS を使用してEXCELやCSVフゔルだけでなく、クラウド上の

SQL Server(SQL Azure)やベントログからのデータ取込みも可能であることを知ってください

• PowerPivot を使用することで、使い慣れたEXCEL上で容易にデータ分析が行えることを知ってください

加工/補正

・独自コンバーター ・スクリプト ・サードパーテゖ製品

SSIS

分析/レポート

・データの取り込み ・CUBEの作成 ・PivotTableの作成

PowerPivot

Page 5: SQL Server 2008 R2 BI

5 5

ご注意

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

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

Page 6: SQL Server 2008 R2 BI

6 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

Page 7: SQL Server 2008 R2 BI

7

SQL Server の BI 機能とは

Page 8: SQL Server 2008 R2 BI

8 8

SQL Server BI ~ 3つの柱

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

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

【データの分析】SSAS:SQL Server Analysis Service

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

データ移入作業の可視化と整形 ・外部フゔル、データベースからの取り込み ・データ変換

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

必要最小限のSQL文の知識と、若干のコーディング力が求められる

Page 9: SQL Server 2008 R2 BI

9 9

SQL Server 2008 のBI

SQL Server

SQL DB

SSIS

SSAS

SSRS

外部データソース

SharePoint

Report Builder

Business Intelligence Development Studio

Business Intelligence Development Studio

Page 10: SQL Server 2008 R2 BI

10 10

SQL Server 2008 R2 でBIはこう変わる

SQL Server

SQL DB

SSIS

SSAS

SSRS

外部データソース

SharePoint

PowerPivot for EXCEL

PowerPivot for SharePoint

EXCEL Services

従来からの機能はそのままに、より使いやすく

発行 編

Report Builder

レポート作成

発行

Reports BIという観点では影が薄れるがDWH構築

には継続的に必須

Page 11: SQL Server 2008 R2 BI

11

まずはインストール!

Page 12: SQL Server 2008 R2 BI

12 12

デモ環境

SQL01

CLI01

SQL Azure

SP01

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

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

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

Page 13: SQL Server 2008 R2 BI

13 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 ドライバ: データ接続コンポーネント ※検索してください!

Page 14: SQL Server 2008 R2 BI

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に対応していないため

Page 15: SQL Server 2008 R2 BI

15

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

Page 16: SQL Server 2008 R2 BI

16

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

Page 17: SQL Server 2008 R2 BI

17

やりたいこと

郵便番号 全国一括データ

CSV/XSLX

差分削除

郵便番号 全国差分-削除データ

CSV/XSLX

郵便番号 全国差分-追加データ

CSV/XLSX

サンプルデータ(郵便番号データ)をSQL Serverに取り込む

初回

定例

Page 18: SQL Server 2008 R2 BI

18

デモデータ「郵便番号データ」の構成と構造

日本郵便が提供:http://www.post.japanpost.jp/zipcode/dl/kogaki.html

一括データ:最終差分まで吸収されたデータ(毎月末に更新) ├ 県別(<件名>_ALL.csv) └ 全国(KEN_ALL.csv)(約12万件) 差分データ:前回からの差分(毎月末にリリース) ├ 新規追加データ(add_xxxx.csv) └ 廃止データ(del_xxxx.csv)

全国地方公共団体コード(JIS X0401, X0402)(5桁) 半角数字 (旧)郵便番号(5桁) 半角文字列(空白あり) 郵便番号(7桁) 半角文字列(先頭0あり) 都道府県名 半角カタカナ(コード順に掲載) 市区町村名 半角カタカナ(コード順に掲載) 町域名 半角カタカナ(五十音順に掲載) 都道府県名 漢字(コード順に掲載) 市区町村名 漢字(コード順に掲載) 町域名 漢字(五十音順に掲載) 一町域が二以上の郵便番号で表される場合の表示 1-該当,0-該当せず 小字毎に番地が起番されている町域の表示 1-該当,0-は該当せず 丁目を有する町域の場合の表示 1-該当,0-該当せず 一つの郵便番号で二以上の町域を表す場合の表示 1-該当,0-該当せず) 更新の表示 0-変更なし,1-変更あり,2-廃止(廃止データのみ使用) 変更理由 0-変更なし,1-市区町政・分区・政令指定都市施行,2-住居表示の実施, 3-区画整理,4-郵便区調整等,5-訂正,6-廃止(廃止データのみ使用)

dantaicode pcode5 pcode7

ktodofuken kshikuchoson

kchoiki todofuken

shikuchoson choiki

flg1 flg2 flg3 flg4 flg5 flg6

Page 19: SQL Server 2008 R2 BI

19

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

まずは簡単に

Page 20: SQL Server 2008 R2 BI

20

変換元 変換先

一括ンポートの処理の流れ

SSIS

郵便番号 全国一括データ

XLS/XLSX

変換プロセス

接続マネージャ(変換元)

接続マネージャ(変換先)

テーブル作成

コピー

テーブル削除

カラムのマップ

Page 21: SQL Server 2008 R2 BI

21

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

• ウゖザードに回答するだけで、簡単なデータフローを作成することができる • Excel を SQL Server に変換するだけならば1分で実装可能

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

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

データフローの設定

テーブル削除実施の有無 テーブル作成の有無

データ新規?/追加?/削除? コピー元カラムとコピー先カラムのマップ

ウゖザードの流れ

変換プロセス

接続マネージャ

接続マネージャ

テーブル作成

コピー

テーブル削除

カラムのマップ

新規コピー

Page 22: SQL Server 2008 R2 BI

22

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

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

注意

UNCパスも使用可能

Page 23: SQL Server 2008 R2 BI

23

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

(参考)変換先の選択

Page 24: SQL Server 2008 R2 BI

24

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

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

全体を複製する

一部を複製する

EXCELの場合はシート名

Page 25: SQL Server 2008 R2 BI

25

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

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

複製したいテーブル(Excelの場合にはシート)を選択

コピー先のテーブルを指定 既定の名前は変換元と同じになるが

変更することもできる

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

次ページへ

Page 26: SQL Server 2008 R2 BI

26

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

(参考)コピー先テーブルの詳細設定

指定したテーブルが既存存在しない場合には「作成する」が規定値

新規に作成する変換先テーブルの情報。 カラム名とデータ型は、変換元から自動判断された設定される 変更したら「SQLの編集」をクリックすること

Page 27: SQL Server 2008 R2 BI

27

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

制御タブ データフロー

移入処理の全体制御を行う データセット間のデータフローを制御する

変換プロセス

接続マネージャ

接続マネージャ

テーブル作成

コピー

テーブル削除

カラムのマップ

新規コピー

SSISデザナー

Page 28: SQL Server 2008 R2 BI

28

ウゖザード〒微調整

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

Page 29: SQL Server 2008 R2 BI

29

EXCELとの違い

• データソースとして「フラットファイルソース」を選択 • 入力フゔルの特性を設定する

• コードページ • フゔルの種類

• CSV/固定幅/幅合わせなし(「行区切り文字」で区切る) • カラムの装飾文字 • ヘッダー関連

• ヘッダーの区切り文字 • ヘッダーの行数

• カラム(列)の定義 • 行の区切り文字(改行文字 等) • 列(カラム)の区切り文字 • 列の属性(データ型、桁数 等)

入力フゔルの属性を定義する必要がある ※64ビット環境で使用可能

Page 30: SQL Server 2008 R2 BI

30

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

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

UNC名を使用可能

注意

Page 31: SQL Server 2008 R2 BI

31

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

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

Page 32: SQL Server 2008 R2 BI

32

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

(参考)データソースの選択(詳細設定)

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

各列の属性 ここで定義した値に沿って変換先テーブルの属性が決定する

Page 33: SQL Server 2008 R2 BI

33

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

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

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

↓ smallint

文字列(DT_STR)

↓ varchar

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

Page 34: SQL Server 2008 R2 BI

34

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

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

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

失敗 or 無視

Page 35: SQL Server 2008 R2 BI

35

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

制御タブ データフロー

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

Page 36: SQL Server 2008 R2 BI

36

外部列

出力列

エラー出力

入力列 エ

ラー出力 外部列

データフローの構成要素

変換元

入力列

変換

出力列

エラー出力

変換先

変換先

入力列 エ

ラー出力

外部列

変換先

入力列 エ

ラー出力

外部列

変換先

入力列 エ

ラー出力

外部列

Page 37: SQL Server 2008 R2 BI

37

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

変換元 変換 変換先

Page 38: SQL Server 2008 R2 BI

38

エラー処理

エラー処理の種類 • エラーを無視する • エラーコンポーネントに渡す

• ベントハンドラーを使用して処理 • エラー行をリダレクト

• エラーが発生した「行」をリダレクトして別のテーブルやフゔルに保存する

どの時点でエラーを捕捉するのかを検討することが重要

カラム単位に設定できる

Page 39: SQL Server 2008 R2 BI

39

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

外部列

出力列

エラー出力

変換元

出力列で定義されている 「各列の属性(データ型,長さなど)」 に合致しない場合にはエラー出力へ

リダレクトされる

Page 40: SQL Server 2008 R2 BI

40

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

Page 41: SQL Server 2008 R2 BI

41

変換元 変換先

差分データを削除

SSIS

郵便番号 全国差分

削除データ

CSV

変換プロセス

接続マネージャ(変換元)

接続マネージャ(変換先)

行削除 既存

入力行に合致する行を検索して削除する

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

Page 42: SQL Server 2008 R2 BI

42

OLE DB コマンド

• 条件に一致した行を更新/削除 • パラメータ化されたSQL文を指定

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

(例)KEN_ALL テーブルから、以下の条件に合致する行を削除 “dantaiCode” = “入力行のCode” “pcode7” = “入力行のcode7”

変換元の列と対応付ける

Page 43: SQL Server 2008 R2 BI

43

おぼえておきたい処理

• 抽出行のコピー SQL文に合致する行のみ処理

• 文字マップ ひらがな/カタカナ/全角/半角 変換

• 派生列変換 カラム結合して新しいカラムを生成

• 条件分岐 条件に合致した入力行ごとにコピー先を変える

• マルチキャスト変換 1行を複数のテーブルにコピー

• 文字列の置換 • カラム内文字列の特定文字を置き換え

Page 44: SQL Server 2008 R2 BI

44

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

Page 45: SQL Server 2008 R2 BI

45

性能監視とチューニング

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

Page 46: SQL Server 2008 R2 BI

46

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

Page 47: SQL Server 2008 R2 BI

47

変換元 変換先

一括ンポートの処理の流れ

SSIS

郵便番号 全国一括データ

CSV

変換プロセス

接続マネージャ(変換元)

接続マネージャ(変換先)

テーブル作成

コピー

テーブル削除

カラムのマップ

とデータ変換

流れはSQL Server と何も変わらない

SQL Azure

Page 48: SQL Server 2008 R2 BI

48

SQL Azureとの接続

.NETプロバダーを使用する

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

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

Page 49: SQL Server 2008 R2 BI

49

SQL Azure のサーバー名をチェック

http://sql.azure.com/

これがサーバー名

Page 50: SQL Server 2008 R2 BI

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

Page 51: SQL Server 2008 R2 BI

51

日本語の取り扱い~データ変換

Unicode 文字列への変換

Page 52: SQL Server 2008 R2 BI

52

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

Page 53: SQL Server 2008 R2 BI

53 53

テーブル

構築するシステムメージ

データベース:LogReport

ComputerList

Eventlog_Security

Eventlog_Application

Eventlog_System

SSIS

ログを収集するコンピューターとログフゔル

のリスト

ログフゔルごとにテーブルを

作成

ネットワーク上のWindows Server または Windows Client から、SSISのWMIデータリーダーを使用してベントログを収集し、SQL Server 2008 / R2 に保存する。 SSISで作成したパッケージは定期的に実行するものとし、前回実行時からの差分はベントログのTimeWritten を基準にして判断するものとする。

Page 54: SQL Server 2008 R2 BI

54

ソース:Eventlogレコードの形式 Category

CategoryString

ComputerName

Data

EventCode

EventIdentifier

InsertionStrings

Logfile

Message

RecordNumber

SourceName

TimeGenerated

TimeWritten

Type

User

カテゴリ番号

カテゴリ名

ベントを生成したコンピュータ名

ベントの付帯情報

Uint16 形式のベントID

Uint32 形式のベントID

ベントの付帯情報

ログフゔルの名前(System,Application,Security など)

ベントの説明文。4000文字(bstr)を超える可能性あり。 シングルクオーテーションが含まれることが多い。

ベントレコードの通番 int32(max 2,147,483,647 )

ベントを生成したソースプロセス(MSSQL,MSInstaller など)

ベントが発生した日時。標準時で生成。

ベントが書き込まれた日時。標準時で生成。

ベントのタプ(情報、エラー、警告、成功の監査、失敗の監査)

ベントを発生させたユーザー

Page 55: SQL Server 2008 R2 BI

55

テーブル構成

ComputerName(FQDN名)

LogFileName

ComputerList

EventLogData_<LogfileName> Number(int)(key)

Category(nvarchar(50))

CategoryString(nvarchar(50))

ComputerName(nvarchar(50))

Data(nvarchar(max))

EventCode(nvarchar(50))

EventIdentifier(nvarchar(50))

InsertionStrings(nvarchar(50))

Logfile(nvarchar(50))

Message(nvarchar(max))

RecordNumber(int)

SourceName(nvarchar(max))

TimeGenerated(datetime)

TimeWritten(datetime)

Type(nvarchar(50))

User(nvarchar(50))

<logfileName> には、Application, System, Security などが入る

Server01 Server02

ソースコンピュータのリスト

EventLogData_System

EventLogData_Application

EventLogData_Security

Page 56: SQL Server 2008 R2 BI

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

Page 57: SQL Server 2008 R2 BI

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

Page 58: SQL Server 2008 R2 BI

58

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

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

Page 59: SQL Server 2008 R2 BI

59

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

Page 60: SQL Server 2008 R2 BI

60

SSIS

制御フローを考えてみる

ComputerList 取り込みソースのリスト

ソース取得

開始

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

テーブル作成

取り込み範囲のチェック

ベントログを一括取得

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

Insert into …

EventLogData_<logfilename> 終了

Insert 文を生成

参照

Page 61: SQL Server 2008 R2 BI

61

制御フローを作成するには

• 部品(制御フロー項目)をデザン画面にドラッグ&ドロップ • 各部品のパラメタを設定する • 部品同士を矢印で接続して「フロー」を決める

事前に処理の流れを決めておくことが重要

SSIS

ソース取得

開始

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

テーブル作成

取り込み範囲のチェック

ベントログを一括取得

レコードごとに Insert 繰り返し

Insert into …

終了

Page 62: SQL Server 2008 R2 BI

62

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

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

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

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

• WMIを使用した処理結果を受け取る場合に使用 • 今回はベントログの取得に使用している ちなみに • EXEコマンドを実行したい場合には • unix/linux 等からログを収集する場合には

Page 63: SQL Server 2008 R2 BI

63

• 制御フロー項目のI/O • 接続マネージャー • 変数 • Expression属性

Page 64: SQL Server 2008 R2 BI

64

制御フロー項目

部品

各項目には、入力と出力を設定する

データベース

フゔル

変数

直接入力 データベース

フゔル

変数

(例)

SQL文

ループの中で処理する場合に、SQL文を変えながら処理が可能

結果のレコードセットを変数に格納し、次の処理で使用できる

結果セット

接続マネージャー

IN OUT

Page 65: SQL Server 2008 R2 BI

65

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

WMIデータリーダー

フゔル接続

WMI接続

変数

WQ

L

Page 66: SQL Server 2008 R2 BI

66

変数

処理フローの中で使用できる、俗にいう「変数」 スコープの設定が可能(プロジェクト全体/ループ内/部品内)

Boolean/Byte/Char/DateTime/DBNull/Doube/Int16/Int32/ Int64/Object/SByte/Single/String/Uint32/UInt64

選択可能な型

TIPS

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

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

超便利!

Page 67: SQL Server 2008 R2 BI

67

Expressions 属性 • 部品(制御フロー項目)、接続マネージャー、変数などに用意されてい

る属性の1つ • Expression(式)を記載することで、指定した他の属性にダナミック

に値を代入することができる

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

Page 68: SQL Server 2008 R2 BI

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, [ComputerName] [nvarchar](50) NULL, [Data] [nvarchar](max) NULL, ・ ・ ・

テーブル名に、変数@[User::tmpLogfileName] を使用することで、部品が呼ばれるたびに、異なるテーブルに対して処理を行うことができる

Page 69: SQL Server 2008 R2 BI

69

スクリプトタスク内での変数の使用

スクリプト内で変数取り扱うことで、VB.NETやC#を使用した柔軟な加工が可能

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)

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

Page 70: SQL Server 2008 R2 BI

70

Page 71: SQL Server 2008 R2 BI

71

SSIS

制御フローの確認

ComputerList 取り込みソースのリスト

ソース取得

開始

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

テーブル作成

取り込み範囲のチェック

ベントログを一括取得

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

Insert into …

EventLogData_<logfilename> 終了

Insert 文を生成

参照 1

2

3

4

5

6

7

8

Page 72: SQL Server 2008 R2 BI

72

処理1:ソース(コンピュータ一覧)の取得

ベントログの取り込み元一覧を取得する

dbo.ComputerList

接続マネージャ

SQ

L

タスク

Select ComputerName,LogfileName From dbo.ComputerList

User::ComputerList

SQLStatement

ADO列挙子 (データセット)

結果セットを変数に保存

Page 73: SQL Server 2008 R2 BI

73

ForEach ループ

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

User::tmpComputerName

User::tmpLogfileName

テーブル作成

取り込み範囲のチェック

ベントログを一括取得

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

Insert into …

Fore

ach

ループ

ADO列挙子 (データセット)

Insert 文を生成

Foreachコンテナの 入力パラメータ

Page 74: SQL Server 2008 R2 BI

74

Foreach の引数「User::ComputerList」について

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

ComputerName

User::ComputerList

LogFileName

ComputerName LogFileName

User::ComputerName

User::LogFileName

列0 列1

列0

列1

行0

行1

Page 75: SQL Server 2008 R2 BI

75

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

User::tmpComputerName

User::tmpLogfileName

SQ

L

文タスク

接続マネージャ

db

o.E

ven

tlog

"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, [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] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]"

Expressions(SQLStatement)

完全なSQL文は 手順書で

Page 76: SQL Server 2008 R2 BI

76

処理4:取り込み範囲のチェック

SQ

L

タスク

Select MAX(TimeWritten) as MaxTimeWritten from [EventLog].[dbo].[EventLogData” + @[User::tmpLogfileName] + “] Where [ComputerName] Like ‘“ + @[User::tmpComputerName]” + “’%”

Expressions(SQLStatement)

接続マネージャ

db

o.E

ven

tlog

User::tmpComputerName

User::tmpLogfileName

変数はスコープ内であればどこででも使える

テーブルには複数のコンピュータのベントログが格納されていることに

注意

User::MaxTimeWritten

SQLタスクの入力パラメータ

戻り値

Page 77: SQL Server 2008 R2 BI

77

処理4:ベントログを一括取得

WM

I

データリーダー

WQLQuerySource

接続マネージャ(WMI)

User::tmpComputerName

User::tmpLogfileName

“Select * from Win32_NTLogEvent where logfile=“ + @[User::tmpLogfileName] + “’ and TimeWritten > “ + (DT_WSTR 20) @(User::MaxTimeWritten)

Expression(Value)

User::MaxTimeWritten

Expression(ConnectionString)

“ServerName=¥¥¥¥”+@[User::tmpComputerName]+”;Namespace=¥¥root¥¥cimv2;UserNtAuth;UserName=;”

Expression(Value)

User::EventData

属性値に変数を使用できる

Expressionsの中では「¥」は

制御記号

キャストが可能

入力パラメータ

User::WQL

User::ConnectionString

Page 78: SQL Server 2008 R2 BI

78

ForEach ループ

処理5:レコードを1件ずつ取り出し

User::EventData

Insert into を実行

Insert 文を生成

User::Category

User::CategoryString

User::ComputerName

User::Type

User::User

取り出した値が見えずらい場合には

Object形式にしておくと便利

Page 79: SQL Server 2008 R2 BI

79

処理6:Insert 文を生成

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

User::Category

User::User

Scrip

t

タスク

Dim strCategory As String = "" If Not IsDBNull(Dts.Variables("User::Category").Value) Then strCategory = Dts.Variables("User::Category").Value.ToString End If 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

変数の値がNullかどうかをチェックしてから

取り出す

Messageにはシングルクオーテーションが含まれているので置き換え

次のページに続く

Page 80: SQL Server 2008 R2 BI

80

Scrip

t

タスク

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) & ":" & _ Mid(strTimeGenerated, 13, 2) End If Dim strSQL As String = "INSERT INTO [EventLog].[dbo].[EventLogData_" & strLogfile & "] ([Category]" & _ ",[CategoryString]" & _ ",[ComputerName]" & _ " VALUES('" & strCategory & "'," & _ "'" & strCategoryString & "'," & _ "'" & strComputerName & "'," & _ Dts.Variables("User::InsertSQL").Value = strSQL

DateTime列に取り込めるように整形

SQL文を生成

User::InsertSQL

Page 81: SQL Server 2008 R2 BI

81

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

SQ

L

タスク

')

SQLStatement

接続マネージャ

db

o.E

ven

tlog

INSERT INTO [EventLog].[dbo].[EventLogData_Application] ([Category],[CategoryString],[ComputerName],[Data],[EventCode],[EventIdentifier],[EventType],[InsertionStrings],[LogFile],[Message],[RecordNumber],[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')

Value

User::InsertSQL

Page 82: SQL Server 2008 R2 BI

82

セルフサービスBI

Page 83: SQL Server 2008 R2 BI

83 83

「BIを支えるIT」が抱える問題

• BIを求めているのはだれ?

– 経営層またはビジネス管理層、ただし実際に分析するのは IW ※決して ITPro や DEV ではない

• BIがうまく普及しない要因は?

– ツールの操作性とプラットフォームの柔軟性

– データベース管理者のBIに関するスキル

– データの散在による分析のための準備

• BIを取り巻く環境の変化

– ビジネススピード

– 分析データの散在とDB統合の煩雑さ

• 複数プラットフォーム(SQLSV、ORACLE、その他)

• エンドユーザーコンピューテゖングの浸透(EXCELやテキストデータ)

• WEB上のデータ

• クラウドの出現

– システム管理者へのニーズ

• システムの安定稼働

Page 84: SQL Server 2008 R2 BI

84 84

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

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

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

セルフサービス BI

Page 85: SQL Server 2008 R2 BI

85 85

PowerPivot(CodeName Gemini)とは

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

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 で編集しレポートして発行 • サーバー負荷を監視するためのダッシュボード

Page 86: SQL Server 2008 R2 BI

86

CUBEの作成もEXCELで

Page 87: SQL Server 2008 R2 BI

87 87

PowerPivotの多彩なデータソース

Page 88: SQL Server 2008 R2 BI

88 88

オンプレミス

ローカルPC

PowerPivotの利用メージ

PowerPivot

SQL Azure SQL Server 2008 R2

CSV

CUBEの作成

ピボットテーブル

Page 89: SQL Server 2008 R2 BI

89 89

PowerPivotが埋め込まれたXLSXフゔルのブラウズ

PowerPivot

CUBEの作成

ピボットテーブル

XSLX

SharePoint with PowerPivot

CUBE ごと保存される

EXCEL 2010

Internet Explorer

PCのリソースを使用

SPのリソースを使用

Page 90: SQL Server 2008 R2 BI

90 90

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

Page 91: SQL Server 2008 R2 BI

91 91

どうしてもPowerPivotをンストールできない場合

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

Page 92: SQL Server 2008 R2 BI

92 92

PowerPivot 利用手順

1. 計画

2. 分析軸用のテーブルを準備

3. Excel 2010 から PowerPivotウゖンドウを 起動

4. 分析に使用するテーブルを読み込み

5. 計算列の追加

6. リレーションシップの作成

7. 分析を実行(ピボットテーブルを作成)

8. 保存 & 発行

Page 93: SQL Server 2008 R2 BI

93 93

1.計画 • メジャー(尺度)

– 分析したい要素

(例)エラーの数、CPU負荷、空メモリ

• ディメンジョン(分析軸)

– メジャーをマップする軸

(例)日時、サーバー名、ベントソース、ベントタプ

– 一意の値

Cm

pute

rN

am

e

Sourc

e

Nam

e

日時

エラー 0

重大

CPU

メモリ

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Page 94: SQL Server 2008 R2 BI

94

ベントログ分析の計画

System Application Security パフォーマンス

ログ

日時

・・・・・・・・

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

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

Page 95: SQL Server 2008 R2 BI

95 95

2.分析軸用テーブルを作成

• 時間軸テーブル

⁃ ベントログテーブルを時系列に関連付けるために使用

⁃ 形式 yyyy/mm/dd hh:nn:00

⁃ 1年分作成すると 60*24*365 = 525600 行

⁃ PowerPivot取込後に計算列(年、月、日、時、分)を作成

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

日時

2010/1/1 00:00:00

2010/1/1 00:01:00

2010/1/1 00:02:00

EXCELで以下のテーブルを作成する

ログタイプ

情報

警告

エラー

重大

• コンピューター名テーブル ⁃ ベントログ同志およびベントログとパフォーマンスロ

グを関連づけるために使用 ⁃ FQDN名でレコードを作成 ⁃ PowerPivot取込後に計算列(コンピューター名)を作成

コンピューター名

sql01.techfielders.com

cl01.techfielders.com

Page 96: SQL Server 2008 R2 BI

96 96

時間軸テーブルの作成について 最初の2行だけ入力して、「フゖル」を使用 行番号 525600 行(1年分)まで自動入力する

Page 97: SQL Server 2008 R2 BI

97 97

3.Excel 2010 から PowerPivot を 起動

この画面でCUBEを作成する

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

Page 98: SQL Server 2008 R2 BI

98 98

4.分析に使用するテーブルを読み込み

• SQL Server より

– ベントログ テーブル

• Eventlog_System

• Eventlog_Application

– コンピューターリスト テーブル

• ComputerList

• EXCEL より

– 時間軸 シート

– ベントタプ シート

Page 99: SQL Server 2008 R2 BI

99 99

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

Page 100: SQL Server 2008 R2 BI

100 100

(注意)PowerPivotの留意点ー利用者のゕクセス権

• (できれば)AD統合認証を使用

• ADユーザーに対してDBへのゕクセス権を付与

– 3段階のゕクセス権に注意

• 第1段階:SQL Serverへのログン権限

• 第2段階:データベースへの接続権限

• 第3段階:テーブルの「選択(Select)」権限

【SQL】PowerPivotを使用してデータベースに接続するとアクセスが拒否される http://blogs.technet.com/junichia/archive/2010/01/21/3307187.aspx

Page 101: SQL Server 2008 R2 BI

101 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

Page 102: SQL Server 2008 R2 BI

102 102

今回のシステムで追加する列

Eventlog_<ログファイル名> テーブル

TimeGenerated 列を 「yyyy/mm/dd hh:nn:00(日付形式)」に変換

ComputerName 列を 「コンピューター名」 のみに変換

ComputerList テーブル

ComputerName 列を 「コンピューター名」 のみに変換

時間軸 テーブル

日時 列を 「yyyy/mm/dd hh:nn:00(日付形式)」に変換

日時 列を 「YYYY」 に変換(年)

日時 列を 「MM」に変換(月)

日時 列を 「DD」に変換(日)

日時 列を 「HH」に変換(時)

日時 列を 「NN」に変換(分)

イベントタイプ テーブル

特に必要なし

Page 103: SQL Server 2008 R2 BI

103 103

(参考)計算列の書式

• [日時]列を「yyyy/mm/dd hh:nn:00」形式に変換 DATEVALUE( YEAR([日時]) & "/" & MONTH([日時]) & "/" & DAY([日時]) ) + TIMEVALUE( HOUR([日時]) & ":" & MINUTE([日時]) )

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

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

実際には1行で記載

Page 104: SQL Server 2008 R2 BI

104 104

ゕプリケーションログ

ID

日時2 Type

ServerName

システムログ

ID

日時2 Type

ServerName

セキュリテゖログ

ID

日時2 Type

ServerName

6.リレーションシップの作成

時間軸

日時

日時2

ベントタプ

Type

ComputerList

ComputerName

Page 105: SQL Server 2008 R2 BI

105 105

PowerPivot でリレーションを作成するには

Page 106: SQL Server 2008 R2 BI

106 106

分析:Step1 Σ値の設定

Page 107: SQL Server 2008 R2 BI

107 107

分析:Step2 列ラベルの設定

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

Page 108: SQL Server 2008 R2 BI

108 108

分析:Step3 行ラベルの設定

Page 109: SQL Server 2008 R2 BI

109 109

分析:Step4 スラサーの追加

Page 110: SQL Server 2008 R2 BI

110 110

便利な機能ースパークラン

セルの中にグラフを表示

Page 111: SQL Server 2008 R2 BI

111

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

Page 112: SQL Server 2008 R2 BI

112 112

BI における SharePoint の位置づけ

SharePoint

PowerPivot for EXCEL

PowerPivot for SharePoint

EXCEL Services

• 分析レポートの共有 • ゕクセス権の管理

発行 編

Report Builder

レポート作成

発行

Reports

SSAS

SSRS

Page 113: SQL Server 2008 R2 BI

113 113

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

Page 114: SQL Server 2008 R2 BI

114 114

Page 115: SQL Server 2008 R2 BI

115 115

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

Page 116: SQL Server 2008 R2 BI

116 116

SSRS と Report Builder の立場は? • 従来からの業務はひきつづきSSRSで

• EXCELでは対応しづらい分野

– レゕウトの自由度 や 文字列データの一覧 など…

• Report Builder 3.0 は表現力がさらに向上

– BINGMAPとの連動

• 地図データと統計データの統合

Page 117: SQL Server 2008 R2 BI

117

Page 118: SQL Server 2008 R2 BI

118 118

まとめ

• SSIS で手離れの良い仕組みを作りましょう

• セルフサービス BI により

– ITPro は本来の業務に集中できます

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

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

Page 119: SQL Server 2008 R2 BI

119

募集「ID管理系 ブロガー」

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

2010.2.27(土)

今すぐ!

Page 120: SQL Server 2008 R2 BI

120