松本美穂と松本崇博が執筆した SQL Server 2016 自習書シリーズの「No.4 Analysis Services の新機能」の HTML 版です。 日本マイクロソフトさんの Web サイトで Word または PDF 形式でダウンロードできますが、今回、HTML 版として公開する許可をいただきましたので、ここに掲載いたします。 なお、記載している内容は、2016年 9月時点での情報になります。[2018年12月29日]
1.SSDT を起動するには、[スタート]メニューの[すべてのアプリ]から、[SQL Server Data Tools 2015]をクリックします(SSDT は、Visual Studio 2015 と統合されているので、SSDT を起動すると、Visual Studio 2015 が起動します)。
2.起動後、[ファイル]メニューの[新規作成]から[プロジェクト]をクリックして、新しいプロジェクトを作成します。
3.[新しいプロジェクト]ダイアログでは[インストール済み]の[テンプレート]から「ビジネス インテリジェンス」の[Analysis Services]を選択し、「Analysis Services表形式プロジェクト」を選択します。
[名前]には、任意のプロジェクト名(既定は TabularProject1)を入力して、[OK]ボタンをクリックします。
4.次に、[テーブル モデル デザイナー]ダイアログが表示されるので、接続先となる Analysis Services のインスタンスと互換性レベルを設定します。
[ワークスペース サーバー]には、Analysis Services のインスタンス名、[互換性レベル]では「SQL Server 2016 RTM(1200)」を選択して、[OK]ボタンをクリックします。
以上で、Analysis Services のTabular Model(表形式モデル)の空のプロジェクトが作成されます。
次に、NorthwindJ データベースから Tabular Model(表形式モデル)にデータをインポートします。
1.データのインポートを行うには、次のようにツールバーの「データソースからのインポート」ボタンをクリックします。
[テーブルのインポート ウィザード]が表示されたら、「Microsoft SQL Server」を選択して、[次へ]ボタンをクリックします。
2.次の[Microsoft SQL Server データベースへの接続]ページでは、接続したい SQL Server の名前とデータベースを選択するために、[サーバー名]で SQL Server の名前を入力(画面は localhost)、[データベース名]で「NorthwindJ」データベースを選択して、[次へ]ボタンをクリックします。
次の[権限借用情報]ページでは、NorthwindJ データベースへ接続するためのログイン アカウントを指定(画面は[サービス アカウント]を選択)して、[次へ]ボタンをクリックします。
3.次の[データのインポート方法の選択]ページでは、テーブル/ビューの一覧からデータを選択するか、クエリ(SQL)を記述するかを選択します。
ここでは「テーブルとビューの一覧から選択し、インポートするデータを選択する」を選択して、[次へ]ボタンをクリックします。
4.次の[テーブルとビューの選択]ページでは、NorthwindJ データベース内のテーブルとビューが表示されるので、「受注明細」テーブルをチェックして、「関連テーブルの選択」ボタンをクリックします。
これにより、受注明細テーブルとリレーションシップのある「受注」と「商品」テーブルにも自動的にチェックがつきます。続いて、もう一度「関連テーブルの選択」ボタンをクリックします。
これにより、受注テーブルとリレーションシップのある「得意先」、「社員」、「運送会社」、商品テーブルとリレーションシップのある「商品区分」、「仕入先」テーブルにも自動的にチェックが付きます。全部で、8つのテーブルにチェックが付いたことを確認したら、[完了]ボタンをクリックします。
これにより、データのインポート(取り込み)が始まり、次のページが表示されます。
「成功」と表示されれば、データのインポートが完了です。インポートは、選択したテーブルの全てのデータを取得しているので(ネットワーク経由で SQL Server からデータを丸ごと転送しているので)、選択したテーブルのデータ量が多い場合には、インポートに時間がかかります。
1.ウィザードでインポートしたデータは、次のように確認できます。
インポートしたテーブルごとにタブが表示され、そのタブをクリックすると、インポートしたデータを確認することができます。
Analysis Services の Tabular Model では、Excel の式と同じように利用できる DAX(Data Analysis eXpressions)とよばれる式がサポートされています。これを利用すれば、既存の列をもとに計算を行ったり、関数処理を行ったりすることが可能です。ここでは、受注明細テーブルの「単価」と「数量」列をかけ算して「受注金額」を計算した列を追加します。
1.受注明細テーブルで DAX 式を記述するには、次のように「受注明細」タブをクリックして、「列の追加」(一番右に表示される列)の 1行目をクリックします。
これにより、fx(式)が入力できるようになるので、「=[」と入力します(全角ではなく、半角で入力してください)。すると、インテリセンス(入力補完)機能が働いて、列の一覧が表示されるようになります。DAX 式では、列を「[列名]」のように半角の大カッコで囲んで指定する必要があるので、[ を入力することでインテリセンス機能が働いています。
列の一覧から [単価] を選択して Tab キーを押下します(インテリセンスでの値の確定は Tab キーを押下するか、ダブル クリックします。Enter キーではないことに注意してください)。続いて、隣に「*」を入力(かけ算を行う演算子を入力)します。入力後、「[」と入力して列の一覧を表示し、[数量] 列を選択して Tab キーを押下します。
最後に Enter キーを押下すると、「単価」と「数量」列をかけ算した結果が新しい列に表示されるようになります。このように DAX 式では、Excel の式と同じように四則演算(+、-、*、/)を記述することができます。
2.新しい列の名前は、自動的に「計算列1」と命名されるので、ここをダブル クリックして、名前を「受注金額」に変更します。
なお、正確な受注金額を計算するには、「割引」列も計算に含める必要がありますが、ここでは省略します。
次に、「メジャー」(データ分析における集計対象となる列)を作成します。
1.メジャーを作成するには、次のように[受注金額]列の任意のデータを選択して、ツールバーの[Σ]ボタンをクリックし、[Σ Sum]をクリックします。
なお、ツールバーではなく、メニューから操作する場合には、[列]メニューの[オート SUM]から[Σ Sum]をクリックします。
2.これにより、「受注金額 の合計」という名前のメジャーが作成されます。
3.次に、「受注金額 の合計」メジャーを選択して、[fx](式)ボックスを、次のように「受注金額計:=」に変更ます。
これで、メジャーの名前を「受注金額計」に変更することができます。
次に、Tabular Model のダイアグラム ビューを表示して、テーブル間のリレーションシップを確認します。
1.ダイアグラム ビューを表示するには、右下にある[ダイアグラム]ボタンをクリックします。
ダイアグラム ビューでは、このようにテーブル間のリレーションシップをグラフフィカルに確認することができます(リレーションシップを新しく作成したり、変更したりすることもできます)。
今回の NorthwindJ データベースでは、リレーションシップ(外部キー制約)を設定しているので、それと同じように Tabular Model でもリレーションシップが自動作成されています。
2.ダイアグラム ビューから、グリッド ビュー(最初の状態)に戻るには、次のように[グリッド]ボタンをクリックします。
次に、作成した Tabular Model を Analysis Services サーバーに配置してみましょう。
1.Analysis Services サーバーに配置するには、ソリューション エクスプローラーでプロジェクト名(既定では TabularProjet1)を右クリックして、[配置]をクリックします。
[配置]をクリックすると、[配置]ダイアログが表示されて、Analysis Services にデータの転送が行われます(Tabular Model にデータをインポートしたときと同様、SQL Server から丸ごとデータを転送するので、対象となっているテーブルのデータ件数が多い場合には、配置に時間がかかります。インポートのときと同じ転送時間がかかります)。
2.Analysis Services サーバーに配置された Tabular Model は、Management Studio を利用して確認することができます。これを行うには、Management Studio を起動して、オブジェクト エクスプローラーの[接続]メニューから[Analysis Services]をクリックします。
[サーバーへの接続]ダイアログが表示されたら、[サーバー名]に Analysis Services のサーバー名(画面は localhost)を入力して、[接続]ボタンをクリックします。
3.Analysis Services への接続後は、次のように[データベース]フォルダーを展開すると、配置された Tabular Model を確認することができます。
SSDT で作成したプロジェクト名と同じ名前のデータベース(画面は TabularProject1)が作成されていることを確認できます。また、プロジェクト名に、ユーザー名と ID が付与されたデータベース(画面は TabularProject1_matumoto_bc30~)も自動作成されていますが、これは SSDT で Tabular Model を作成中に内部的に利用(自動配置)されているデータベースです。このデータベースは、SSDT を終了すると削除されます。
次に、作成した Tabular Model のデータを参照してみましょう。
1.Management Studio には、MDX クエリ デザイナーというデータを参照できるツール(Analysis Services の多次元モデルまたは Tabular Model に対してクエリをグラフィカルに実行できるツール)があるので、これを利用してみます。MDX クエリ デザイナーを利用するには、次のようにデータベース名(画面は TabularProject1)を右クリックして、[参照]をクリックします。
2.MDX クエリ デザイナーでは、[Measures]の[受注明細]フォルダーを展開して、[受注金額計]メジャーをドラッグ&ドロップして配置します。
メジャーは、データ分析における集計対象となる列で、[受注金額計]メジャーは前の手順で DAX 式で作成した 数量と単価をかけ算した計算列です。これをドラッグ&ドロップすると、29,821,530円という受注金額の合計が計算されていることが分かります。
なお、この金額が正しいかどうかは、SQL Server のデータベース エンジンに対して、次のように SQL ステートメントを実行することで確認することもできます。
3.次に、[商品区分]テーブルを展開して、[区分名]列をドラッグ&ドロップして配置します。
「飲料」が 4,949,750円や「加工食品」が 2,272,300円と表示されて、商品区分ごとの受注金額が表示されたことを確認できます。
なお、この金額が正しいかどうかは、SQL Server のデータベース エンジンに対して、次のように SQL ステートメントを実行することで確認することもできます。
SQL Server に対して SQL ステートメントを実行する場合は、このように 4つのテーブルを JOIN して、GROUP BY 演算を記述しなければなりませんが、Analysis Services の Tabular Model を利用すれば、SQL ステートメントを記述することなく、同じことを実現することができます。また、後述しますが、Tabular Model では、内部的にインメモリのカラムストア インデックス(列ごとに高度に圧縮されたインデックス)が自動作成されているので、SQL Server からデータを取り出すよりも性能が良いというメリットもあります。
4.次に、[商品]テーブルを展開して、[商品名]列をドラッグ&ドロップして配置します。
「オタル白ラベル」が 486,000円や「コーヒービター」が 133,000円と表示されて、商品ごとの受注金額が表示されたことを確認できます。
このように Tabular Model を利用すれば、いろいろな角度からのデータ集計/分析も簡単に行うことができます。
5.次に、配置した[商品名]列を左側の[メタデータ]ペインにドラッグ&ドロップします。
このように MDX クエリ デザイナーでは、列の配置や削除は、ドラッグ&ドロップで簡単に行うことができます。
6.次に、MDX クエリ デザイナーのツールバーの[デザイン モード]ボタンをクリックします。
これをクリックすると、「SELECT NON EMPTY {[Measures].[受注金額計]} ON COLUMNS, ~ 」のように記述されたステートメントを確認することができます。これは MDX(MultiDimensional eXtensions)と呼ばれるステートメントで、元々は Analysis Services の多次元モデル(MultiDimensional Model)向けに開発されたステートメント(SQL ステートメントの多次元版)ですが、Tabular Model に対しても実行できるようになっています。
ここで使用した MDX クエリ デザイナーは、ドラッグ&ドロップで列を配置することで、MDX ステートメントをグラフィカルに生成/実行することができるツールで、生成された MDX ステートメントはこのように[デザイン モード]ボタンをクリックすることで確認することができます。
第60回:SQL Server 2017 自習書 No.3「SQL Server 2017 Machine Learning Services」のご案内
第59回:SQL Server 2017 自習書 No.2「SQL Server 2017 on Linux」のご案内
第58回:SQL Server 2017 自習書 No.1「SQL Server 2017 新機能の概要」のご案内
第57回:SQL Server 2017 RC 版とこれまでのドキュメントのまとめ
第56回:「SQL Server 2016 への移行とアップグレードの実践」完成&公開!
第55回:書籍「SQL Server 2016の教科書 開発編」(ソシム)が発刊されました
第54回:「SQL Server 2016 プレビュー版 Reporting Services の新機能」自習書のお知らせ
第 53 回:SQL Server 2016 Reporting Services の新しくなったレポート マネージャーとモバイル レポート機能
第 52 回:SQL Server 2016 の自習書を作成しました!
第 51 回:PASS Summit と MVP Summit で進化を確信!
第 50 回:新しくなった Power BI(2.0)の自習書を作成しました!
第49 回:Excel 2016 の Power Query を使う
第 48 回:新しくなった Microsoft Power BI ! 無料版がある!!
第 47 回:「Microsoft Azure SQL Database 入門」 完成&公開!
第 46 回:Microsoft Power BI for Windows app からの Power BI サイト アクセス
第 45 回:Power Query で取得したデータを PowerPivot へ読み込む方法と PowerPivot for Excel 自習書のご紹介
第44回:「SQL Server 2014 への移行とアップグレードの実践」ドキュメントを作成しました
第43回:SQL Server 2014 インメモリ OLTP 機能の上級者向けドキュメントを作成しました
第42回:Power Query プレビュー版 と Power BI for Office 365 へのクエリ保存(共有クエリ)
第41回:「SQL Server 2014 CTP2 インメモリ OLTP 機能の概要」自習書のお知らせです
第40回: SQL Server 2012 自習書(HTML版)を掲載しました
第39回: Power BI for Office 365 プレビュー版は試されましたか?
第38回: SQL Server 2014 CTP2 の公開
第37回: SQL Server 2014 CTP1 の自習書をご覧ください
第36回: SQL Server 2014 CTP1 のクラスター化列ストア インデックスを試す
第35回: SQL Server 2014 CTP1 のインメモリ OLTP の基本操作を試す
第34回: GeoFlow for Excel 2013 のプレビュー版を試す
第33回: iPad と iPhone からの SQL Server 2012 Reporting Servicesのレポート閲覧
第32回: PASS Summit 2012 参加レポート
第31回: SQL Server 2012 Reporting Services 自習書のお知らせ
第30回: SQL Server 2012(RTM 版)の新機能 自習書をご覧ください
第29回: 書籍「SQL Server 2012の教科書 開発編」のお知らせ
第26回: SQL Server 2012 の Power View 機能のご紹介
第25回: SQL Server 2012 の Data Quality Services
第24回: SQL Server 2012 自習書のご案内と初セミナー報告
第23回: Denali CTP1 が公開されました
第22回 チューニングに王道あらず
第21回 Microsoft TechEd 2010 終了しました
第20回 Microsoft TechEd Japan 2010 今年も登壇します
第19回 SQL Server 2008 R2 RTM の 日本語版が公開されました
第18回 「SQL Azure 入門」自習書のご案内
第17回 SQL Server 2008 自習書の追加ドキュメントのお知らせ
第16回 SQL Server 2008 R2 自習書とプレビュー セミナーのお知らせ
第15回 SQL Server 2008 R2 Reporting Services と新刊のお知らせ
第14回 TechEd 2009 のご報告と SQL Server 2008 R2 について
第13回 SQL Server 2008 R2 の CTP 版が公開されました
第12回 MVP Summit 2009 in Seattle へ参加