松本美穂と松本崇博が執筆した SQL Server 2016 自習書シリーズの「No.4 Analysis Services の新機能」の HTML 版です。 日本マイクロソフトさんの Web サイトで Word または PDF 形式でダウンロードできますが、今回、HTML 版として公開する許可をいただきましたので、ここに掲載いたします。 なお、記載している内容は、2016年 9月時点での情報になります。[2018年12月29日]
Analysis Services の Tabular Model に対しては、いろいろなクライアントから接続することができます。その主なものは、次のとおりです。
前の手順では、Management Studio の MDX クエリ デザイナーから Tabular Model に接続する方法を説明しましたが、Tabular Model に対しては、Excel や Power BI、Reporting Services などから接続することもできます。ここではこれらを試してみましょう。
SSDT で作成したTabular Modelに対しては、SSDT から[Excel で分析]ボタンをクリックするだけで、Excel から接続することができます(Excel がインストールされている場合)。ここではこれを試してみましょう。
1.まずは、SSDT に戻って、次のようにツールバーの[Excel で分析]をクリックします。
[Excel で分析]ダイアログでは、[モデルへの接続に使用するユーザー名またはロールを指定します]で[現在の Windows ユーザー]が選択されていることを確認して、[OK]ボタンをクリックします。
2.これで(Excel が同じマシンにインストールされている場合には)Excel が自動的に起動して、次のように[ピボット テーブル]と[ピボット テーブルのフィールド リスト]が表示されます。
フィールド リストには、Tabular Model にインポートしたテーブルと、そのテーブル内のフィールド(列)やメジャーが表示されて、これらを「Σ 値」や「行」、「列」、「フィルター」に配置していくことでピボット テーブルを作成できます。
3.「Σ 値」には、計算/集計を行いたい列を配置するので、次のように「Σ 受注明細」の「受注金額計」メジャーをチェックします。
メジャーとして設定した列は、チェックボックスをチェックすることで自動的に「Σ 値」に配置されて、合計(SUM)が計算されます。受注金額の合計が 29,821,530円と計算されていることを確認できます(前の手順で Management Studio の MDX クエリ デザイナーで確認したものと同じ金額です)。
4.次に、「商品区分」テーブルの「区分名」列をチェックします。
チェックボックスをチェックすることで自動的に「行」に配置されて、商品区分ごとの受注金額が表示されることを確認できます。「飲料」が 4,949,750円や「加工食品」が 2,272,300円と表示されて、前の手順で Management Studio の MDX クエリ デザイナーから確認した値と同じ金額であることも分かります。
5.次に、「商品」テーブルの「商品名」列をチェックします。
「商品名」が「行」に配置されて、「オタル白ラベル」の 486,000円や「コーヒービター」の 133,000円が表示されて、商品ごとの受注金額が表示されることを確認できます。
6.次に、ピボット テーブルのトップテン フィルター機能を利用して、商品売上が多いトップ 3 のみを表示するように変更してみましょう。これを行うには、次のように任意の商品名を右クリックして、[フィルター]の「トップテン」をクリックします。
[トップテン フィルター(商品名)]ダイアログでは、上位 3件のみを表示するように「3」と入力して、[OK]ボタンをクリックします。これで、商品売上が多いトップ 3 のみを表示できるようになります。
7.設定したトップテン フィルターを解除したい場合には、次のように任意の商品名を右クリックして、[フィルター]の「商品名 からフィルターをクリア」をクリックします。
8.次に、商品名を削除して、区分ごとの売上金額を表示するように変更します。商品名を削除するには、次のように[行]に配置されている「商品名」の隣の[▼]をクリックして、[フィールドの削除]をクリックします。
9.区分ごとの受注金額が表示されるようになったら、次はカラー スケールを設定して、金額を分かりやすく表示してみましょう。これを行うには、次のように受注金額を選択してから、[ホーム]タブの[条件付き書式]→[カラー スケール]をクリックします。
これで受注金額が色分けされて、金額の大きい/小さいが一目瞭然で分かるようになります。
10.次に、ピボットグラフを追加して、受注金額をグラフで表示してみましょう。これを行うには、次のように[挿入]タブで[ピボット グラフ]をクリックします。
[グラフの挿入]ダイアログが表示されたら、[円]を選択して、[OK]ボタンをクリックします。これで、商品区分ごとの売上金額を円グラフで表示できるようになります。
このように、Tabular Model に対して、Excel(ピボット テーブル)から接続すると、簡単に見栄えの良いデータ分析レポートを作成することができます。
次に、SSDT のツールバーからではなく、Excel から直接 Tabular Model に接続する方法を説明します(操作画面は Excel 2016 を利用している場合になりますが、他のバージョンでもほとんど同じ操作で接続できます)。
1.まずは Excel を起動します。
2.Excel が起動したら、[データ]タブを開いて、[外部データの取り込み]の[その他のデータ ソース]メニューから「Analysis Services」をクリックします。
「データ接続ウィザード」が起動したら、[データベース サーバーに接続]ページでは[サーバー名]に接続先となる Analysis Services のサーバー名(画面は localhost)を入力、認証方法で任意の接続方法を選択して、[次へ]ボタンをクリックします。
次の[データベースとテーブルの選択]ページでは、[使用するデータが含まれているデータベースを選択]リストで Analysis Services サーバー上に配置したデータベースの名前(既定では SSDT で作成したプロジェクトの名前:TabularProject1)を選択して、[次へ]ボタンをクリックします。
なお、サーバーへの接続でエラーになったり、データベースの一覧が表示されなかったりする場合は、接続時のユーザーを確認してみてください。Analysis Services では、後述の行レベル セキュリティを設定するまでは、管理者アカウントのみが接続することができ、このアカウントは、Analysis Services のインストール時に[Analysis Services の構成]ページで設定しています。
また、Analysis Services をインストールしたマシンとは別のマシン上の Excel から接続する場合には、Excel を利用しているマシン側に、Analysis Services に接続するための OLEDB プロバイダー「Analysis Services OLE DB Provider」が必要になります(Excel 2016 の場合は、既定でインストールされいるので、別途操作は必要ありませんが、Excel 2013 以下のバージョンを利用している場合は、インストールが必要になります)。
Analysis Services OLE DB Provider の最新バージョン(SQL_AS_OLEDB.msi)は、SQL Server の各 Feature Pack とともに提供されていて、SQL Server 2016 の Feature Pack は次の URL からダウンロードすることができます。
SQL Server 2016 Feature Pack ページ
http://www.microsoft.com/ja-JP/download/details.aspx?id=52676
3.次の[データ接続ファイルを保存して終了]ページでは、接続情報をファイルとして保存するための設定が行えます。ここでは[完了]ボタンをクリックして、ウィザードを終了します。
次に、[データのインポート]ダイアログが表示されるので、[ピボット テーブル レポート]が選択されていることを確認して、[OK]ボタンをクリックします。
以上で、Excel から Tabular Model への接続が完了です。接続が完了すると、前述のピボット テーブルと同様、次のように表示されます(ピボット テーブルの操作方法は、前の手順とまったく同じです)。
次に、Power BI Desktop から Tabular Model に接続してみましょう。Power BI Desktop は、無料で利用できる BI ツールで、見栄えの良いレポート/グラフを簡単に作成することができます。
Power BI Desktop は、次の URL からダウンロードすることができます。
http://powerbi.microsoft.com/ja-jp/desktop/
Power BI Desktop は、2015年 7月に最初のバージョンが提供されましたが、以降 毎月アップデート版(追加機能が提供された最新版)が提供されています。Power BI Desktop は、毎月毎月どんどん進化していくので、最新版が提供されたらそれをダウンロードして、更新することをお勧めします(今までにできなかったことが、更新によってどんどんできるようになっています)。
1.Power BI Desktop から Analysis Services サーバーにアクセスするには、最初のページで[データを取得]をクリックします。
[データを取得]ダイアログでは、[SQL Server Analysis Services データベース]を選択して、[接続]ボタンをクリックします。
2.次の[SQL Server Analysis Services データベース]ダイアログでは、[サーバー名]に接続先となる Analysis Services のサーバー名(画面は localhost)を入力して、[ライブ接続]が選択されていることを確認し、[次へ]ボタンをクリックします。
3.次の[ナビゲーター]ダイアログでは、Analysis Services 上のデータベースの一覧が表示されるので、接続したいデータベースを選択(画面は TabularProject1)を選択して、[OK]ボタンをクリックします。
4.Analysis Services への接続が完了すると、次のように右側の[フィールド]ペインにテーブルと列の一覧が表示されるので、[受注明細]テーブルの[受注金額計]メジャーをチェックします。
受注金額の合計が縦棒グラフで表示されることを確認できます。
5.次に、[フィールド]ペインで[商品区分]テーブルの[区分名]をチェックします。
これで商品区分ごとの受注金額が表示されることを確認できます。
6.次に、[視覚化]ペインで、[円グラフ]を選択します。
7.次に、配置した「区分名」を削除するために、次のように[凡例]に配置されている「区分名」の隣の[▼]をクリックして、[フィールドを削除]をクリックします。
8.次に、[フィールド]ペインで[商品]テーブルの[商品名]をチェックします。
これで商品ごとの受注金額が表示されることを確認できます。
9.次に、円グラフとは別の場所(何も配置していない空白の部分)をクリックしてから、[商品区分]テーブルの[区分名]をチェックします。
これで、「区分名」がグリッドとして表示されます。
10.次に、[視覚化]ペインで[スライサー]を選択します。
これで、「区分名」をデータの絞り込みが行えるスライサーに変更することができるので、「飲料」区分をクリックします。これで、円グラフが飲料区分内の商品のみに変更される(データが絞り込まれる)ことを確認できます。確認後は、「加工食品」や「魚介類」など、別の商品区分もクリックしてみてください。
11.次に、円グラフを選択してから、[視覚化]ペインで[積み上げ横棒グラフ]をクリックします。
これで、商品ごとの売上を横棒グラフで表示できるようになります。
このように、Power BI Desktop を利用すれば、見栄えの良いデータ分析レポートを簡単に作成することができます。グラフの種類には、棒グラフだけでなく、次のようにツリーマップやドーナッツ、じょうご(フィルター)、複合グラフ、バブル/散布図、マップ(地図)など、いろいろな種類が用意されています。
Power BI Desktop では、これらの標準のグラフに加えて、自分でグラフをカスタマイズ(自作のグラフを利用)したり、他のユーザーが作成したカスタム グラフ(カスタム ビジュアルと呼ばれています)を利用したりすることもできます。後者は、以下のページで公開されているので、ダウンロードして利用することができます。
カスタム ビジュアルのダウンロード
http://app.powerbi.com/visuals/
例えば、ここで公開されている「Word Cloud」というカスタム ビジュアルを利用すれば、次のように商品の売上を表示することもできます。
このように、Power BI Desktop は、データ分析レポートを作成するにあたって、いろいろな機能が提供されているので、ぜひ試してみてください。Power BI Desktop については、本自習書シリーズの「Power BI を試してみよう」編でも詳しく説明しているので、こちらもぜひご覧いただければと思います。
次に、Reporting Services から Tabular Model に接続してみましょう。Reporting Services は、従来ながらの「レポート ビルダー」、SQL Server 2016 からの新機能である「モバイル レポート パブリッシャー」のどちらからでも Tabular Model にアクセスすることができます。
まずは、レポート ビルダーからの接続方法を説明します。
1.レポート ビルダーから Analysis Services に接続するには、最初の[作業の開始]ページで、[新しいレポート]の[グラフ ウィザード]をクリックします(ウィザードでの接続を例に説明します)。
2.ウィザードの最初のページ[データセットの選択]では、[データセットを作成する]を選択して、[次へ]ボタンをクリックします。
3.次の[データ ソースへの接続の選択]ページでは、[新規]ボタンをクリックします。
[データ ソースのプロパティ]ダイアログでは、[接続の種類の選択]で、「Microsoft SQL Server Analysis Services」を選択して、[ビルド]ボタンをクリックします。
4.[Connection Properties]ダイアログが表示されたら、[サーバー名]に Analysis Services のサーバー名を入力して(画面は localhost)、接続したいデータベースを選択します(画面は TabularProject1 を選択)。
5.[データ ソースのプロパティ]ページに戻ったら、[OK]ボタンをクリックします。
6.[データ ソースへの接続の選択]ページに戻ったら、[次へ]ボタンをクリックします。
7.次に、MDX クエリ デザイナーが表示されて、どのデータを取得するのかをグラフィカルに設定することができます(MDX クエリ デザイナーの利用方法は、前述の Management Studio の場合と全く同じです)。
まずは、[Measures]の[受注明細]を展開して、[受注金額計]メジャーをドラッグ&ドロップして配置します。
8.次に、[商品区分]の[区分名]をドラッグ&ドロップして配置し、商品区分ごとの受注金額を取得します。
9.次の[グラフの種類の選択]ページでは、[円]を選択して、[次へ]ボタンをクリックします。
10.次の[グラフのフィールドの配置]ページでは、[受注金額計]を[Σ 値]、「区分名」を[カテゴリ]にドラッグ&ドロップして、[次へ]ボタンをクリックします。
これで区分ごとの受注金額を円グラフで表示できるようになります。
11.次の[プレビュー]ページでは、[完了]ボタンをクリックします。
以上でレポートが完成です。
12.次のようにレポートのデザイン ページが表示されたら、[実行]をクリックして、レポートのプレビューを表示してみます。
商品区分ごとの受注金額が円グラフで表示されることを確認できます。このように、Reporting Services のレポート ビルダーでは、MDX クエリ デザイナーを利用して、Analysis Services に接続/クエリを実行して、レポートを作成していくことができます。
なお、Reporting Services の詳細(レポート ビルダーを利用したグラフの作成方法の詳細など)については、SQL Server 2012 の自習書シリーズの「Reporting Services によるレポート作成 上・中・下」編で詳しく説明しているので、こちらもぜひご覧いただければと思います。
SQL Server 2016 の Reporting Services からは、モバイル レポート パブリッシャーというツールが提供されて、見栄えの良いモバイル レポートを簡単に作成できるようになっています。これを利用すれば、Analysis Services の Tabular Model に接続して、次のようなレポートを作成することができます。
モバイル レポート パブリッシャーを利用したモバイル レポートの作成方法については、本自習書シリーズの No.3「SQL Server 2016 Reporting Services の新機能」編で詳しく説明しているので、こちらもぜひご覧いただければと思います。
前の Step では、Management Studio の「MDX クエリ デザイナー」から Tabular Model に接続する方法を説明しましたが、Management Studio では、MDX ステートメントを直接記述して実行することができる「MDX クエリ エディター」も用意されています。
MDX クエリ エディターを起動するには、Management Studio で Analysis Services に接続して、次のようにオブジェクト エクスプローラーでデータベースを右クリックして、[新しいクエリ]の[MDX]をクリックします。
MDX では、SQL ステートメントと同様、SELECT .. FROM .. WHERE という基本構成になります。選択リストには、列項目(列として表示したい項目)と行項目(行として表示したい項目)を { } で囲んで指定し、列項目には ON COLUMNS、行項目には ON ROWS を記述します。FROM [モデル] の部分は、多次元モデルではキューブ名を指定するところになりますが、Tabular Model では [モデル] と指定します。
列項目には「受注金額計」メジャーを指定しますが、メジャーの場合は「[Measures].[メジャー名]」という形で指定します。MDX では [ ] 大カッコで項目を囲むのが基本になります(大カッコは、日本語を扱う場合の基本ルールになります)。商品区分に関しては「[商品区分].[区分名].Members」という形で、商品区分テーブルの区分名列を大カッコで囲んで指定して、Members と指定することで、区分データ(区分のメンバー)を取得できます。
MDX クエリ エディターでは、「DAX クエリ」を実行することもできます。DAX(Data Analysis eXpressions)は、Tabular Model を操作するための専用ステートメントです。前の手順では、受注金額を取得するために「[単価] * [数量]」という式を記述しましたが、これも DAX です。
このように MDX クエリ エディターでは、「DAX クエリ」を実行することもできるので、DAX をテストするときに便利です。
Analysis Services に対して .NET Framework 言語(VB や C#)から接続する場合には、ADOMD.NET(ADO.NET の多次元版)を利用します。ADOMD.NET の最新バージョンは、SQL Server の各 Feature Pack とともに提供されていて、SQL Server 2016 の Feature Pack は次の URL からダウンロードすることができます。
SQL Server 2016 Feature Pack ページ
http://www.microsoft.com/ja-JP/download/details.aspx?id=52676
ADOMD.NET で提供されるクラスは、ADO.NET と同じように利用できるものがほとんどで、Connection クラスで「Analysis Services への接続」、Command クラスで「DAX クエリまたは MDX クエリの定義または実行」、DataAdapterまたは DataReader クラスで「クエリ結果の取得」ができます(各クラスには Adomd という接頭辞が付きます)。具体的には、次のように利用することができます(VB の場合)。
このように ADOMD.NET を利用すれば、アプリケーションから Tabular Model にアクセスすることができます。
第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 へ参加