SQL Server のことなら SQL Quality SQL Server パフォーマンス チューニング、コンサルティング、アドバイス、相談、定期診断、トレーニング

ホーム > 技術情報 > Power BI 自習書「Power BI を試しみよう 改訂第2版」

Microsoft Power BI 自習書シリーズ (HTML 版)
「Power BI を試しみよう 改訂第2版」

松本美穂と松本崇博が執筆した Power BI 自習書シリーズの「Power BI を試しみよう」(改訂第2版)の HTML 版です。 日本マイクロソフトさんの Web サイトで Word または PDF 形式でダウンロードできますが、今回、HTML 版として公開する許可をいただきましたので、ここに掲載いたします。なお、記載している内容は、2017年 3月に提供されていた powerbi.com のサービスおよび Power BI Desktop をもとにしています。[2018年12月29日]

目次へ | 前のページへ | 次のページへ

3.8 DAX で日付ディメンションの作成、タイム インテリジェンス関数

DAX では、日付ディメンション(受注日などの日付を使った分析に役立つディメンション)を作成することも簡単に行えます。CALENDAR または CALENDARAUTO という DAX 関数を利用すれば、日付データを生成することができます。CALENDAR 関数の場合は、次のように利用することで、開始日から終了日までの日付データを生成することができます。

CALENDAR ( 開始日終了日 )

また、DAX では、タイム インテリジェンス関数という日付に関する便利な操作が可能な関数も用意されていて、これを利用すれば前年金額前年比を取得したり、累積金額を取得したりすることも簡単にできます。

なお、CALENDARCALENDARAUTO およびタイム インテリジェンス関数は、執筆時点ではDirectQuery では利用することができないので、次のようにデータを[インポート]した場合に利用することができます。

00187

◆ 日付ディメンションの作成(CALENDAR 関数)

それでは、日付ディメンションを作成してみましょう。

1.日付ディメンションを作成するには、[モデリング]タブを開いて、[新しいテーブル]ボタンをクリックします。

00188

2.DAX エディターが表示されたら、次のように CALENDAR 関数を記述して、2014年1月1日から 2016年12月31日までの日にちを生成するようにします(∵NorthwindJ データベース内の受注データが 2014~2016年の範囲であるため)。

CALENDAR DATE (201411), DATE (20161231) )

00189

CALENDAR 関数の開始日と終了日には、DATE 関数を利用していますが、DATE(2014,1,1) と指定することで 2014年 1月 1日、DATE(2016,12,31) と指定することで 2016年 12月 31日を与えることができます。これで、2014年 1月 1日から、1日ごとに 1行のデータが生成されて(365日 * 3年分+うるう日=1,096行)、最後のデータが 2016年 12月 31日になります。

00190

3.次に、テーブルの名前を「日付」に変更します。これを行うには、DAX 式の「テーブル =」という部分を「日付 =」に変更します。

00191

4.次に、計算列として「」を追加して、年ごとに売上データを分析できるようにします。計算列を追加するには、[新しい列]ボタンをクリックしてから、次のように DAX 式を記述します。

年 = FORMAT([Date], "yyyy")

00192

DAX 式には、FORMAT 関数を利用して、"yyyy" と指定することで、日付データ(Date 列)から を取得することができます。前の手順の CALENDAR 関数では、生成された列が「Date」という名前になるので、FORMAT 関数の第1引数には「[Date]」と指定しています。

5.次に、もう1つ計算列を追加して、月ごとに売上データを分析できるようにします。もう一度[新しい列]ボタンをクリックしてから、次のように DAX 式を記述します。

月 = FORMAT([Date], "MM")

00193

FORMAT 関数を利用して、"MM" と指定することで、日付データから を取得できます。

6.続いて、さらにもう1つ計算列を追加して、曜日ごとに売上データを分析できるようにします。もう一度[新しい列]ボタンをクリックしてから、次のように DAX 式を記述します。

曜日 = FORMAT([Date], "aaa")

00194

FORMAT 関数を利用して、"aaa" と指定することで、日付データから 曜日(日本語で1文字)を取得できます。

このように、DAX を利用すれば、日付ディメンションを簡単に作成することができます。

◆ リレーションシップの作成(受注日から日付ディメンションへ)

日付ディメンションを利用できるようにするには、リレーションシップ(テーブル間の関連付け)を作成する必要があります(作成した日付ディメンションの Date 列と受注日(売上のあった日にち)を関連付けるために、リレーションシップを作成します。

1.リレーションシップを作成するには、次のように[リレーションシップ]ボタンをクリックします。

00195

表示されたテーブルの中に、作成した日付ディメンション(日付テーブル)があることを確認できます。

2.次に、[受注]テーブルの[受注日]列を、[日付]テーブルの[Date]列にドラッグ&ドロップします。

00196

これでリレーションシップが作成されて、作成されたリレーションシップは次のように表示されます。

00197

受注日と日付は、多対1の関係なので、は「*」、1は「1」と表示されています。

3.リレーションシップの作成後は、[レポート]ボタンをクリックして、レポート デザイナーに戻ります。レポート デザイナーでは、「日付」テーブルの[]と「受注明細」テーブルの「売上金額」メジャーをクリックして、マトリックスで表示します。

00198

年ごとの売上金額の合計が表示されることを確認できます。

4.次に、[商品区分]テーブルの[区分名]列を、[]にドラッグ&ドロップして配置します。

00199

これで、年ごとの売上を、商品区分ごとに確認できるようになります。

5.次に、[日付]テーブルの[]を、[]の[]の下にドラッグ&ドロップして配置します。

00200

これで、年ごと、月ごと、区分ごとに売上を確認できるようになります。

6.次に、[]に配置した[売上金額]の[▼]ボタンをクリックして、[条件付書式]をクリックして、条件付き書式を設定します。

00201
00202

このように条件付き書式を設定すれば、どの月の、どの区分の売上が良かったのか/悪かったのかを簡単に確認できるようになります。

例えば、[魚介類]の 2014年11月の売上小さく2015年6月の売上は大きいことなどが一目瞭然で分かるようになります。

このように、日付ディメンションを作成することで、年ごとや月ごと、曜日ごとなどの売上分析を簡単に行えるようになります。

◆ DAX で前年金額を取得(SAMEPERIODLASTYEAR 関数)

DAX では、日付ディメンションを作成している場合に、タイム インテリジェンス関数という日付に関する便利な操作(前年金額や累積金額などの取得)が可能な関数を利用できます。ここでは、SAMEPERIODLASTYEAR というタイム インテリジェンス関数を利用して、前年の金額を取得してみましょう。

1.まずは、[モデリング]タブを開いて、[受注明細]テーブルを選択してから、[新しいメジャー]をクリックします。DAX 式には、次のように記述します。

前年金額 = CALCULATE(SUM('受注明細'[売上金額])
                    ,SAMEPERIODLASTYEAR ('日付'[Date]))

00203

CALCULATE 関数では、第2引数に「SAMEPERIODLASTYEAR」関数を指定することで、前年のデータを取得することができます。上の例では、2行に改行して記述していますが、1行でまとめて記述しても大丈夫です。

なお、「SAMEPERIODLASTYEAR」関数の部分は、次のように「DATEADD」関数を利用しても同じ結果(1年前のデータ)を取得することができます。

前年金額 = CALCULATE(SUM('受注明細'[売上金額]), DATEADD('日付'[Date], -1YEAR))

2.設定後、レポート デザイナーに戻って、新しく作成したメジャー「前年金額」を、[]の[売上金額]の下に配置します。

00204

このように、DAX を利用すれば、前年金額も簡単に計算することができます。

3.なお、[区分名]を[]、[]を[]に配置した場合は、次のようにマトリックス(クロス集計表)を作成できます。

00205

◆ DAX の参考情報

DAX の詳細については、以下のヘルプ ページが参考になります。

DAX 関数リファレンス
http://msdn.microsoft.com/ja-jp/library/ee634396.aspx

00206

執筆時点での Power BI Desktop で利用できる DAX は、Excel 2016 および SQL Server 2016 Analysis Services(SSAS)で利用できるものと全く同じものですが、Power BI Desktop の場合には毎月のアップデート(機能拡張)があるので、今後は Power BI Desktop でのみ利用できる DAX 関数が登場する可能性も多いにあります。

目次へ | 前のページへ | 次のページへ

事例1

SQLQualityは執筆とセミナーを通じて技術の啓蒙やエンジニアの育成支援も行っています
最新刊
SQL Server 2016 の教科書
SQL Server 2016 の教科書(ソシム)

弊社オリジナル制作の
SQL Server 2016 自習書も
マイクロソフトのサイトで公開中!
ダウンロードはこちら
セミナー風景
セミナー風景

ロングセラー
ASP.NET でいってみよう  SQL Server 2000 でいってみよう
ASP.NET でいってみよう
第7刷 16,500 部発行
SQL Server 2000 でいってみよう
第12刷 28,500 部発行
SQL Server 2014 CTP2 インメモリ OLTP 機能の概要
SQL Server 2014 CTP2 インメモリ OLTP 機能の概要(Amazon Kindle 書籍)

弊社執筆の
SQL Server 2014 自習書
マイクロソフトのサイトで公開中
目次はこちら

弊社執筆の
SQL Server 2012 自習書
マイクロソフトのサイトで公開中
ダウンロードはこちら
松本美穂のコラム
(公開活動などのお知らせ)

第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 へ参加

技術コミュニティでも活動中