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

ホーム > 技術情報 > Power BI 自習書 No.1 無料で利用できる Power BI を試しみよう

Microsoft Power BI 自習書シリーズ (HTML 版)
「No.1 無料で利用できる Power BI を試しみよう」

松本美穂と松本崇博が執筆した Power BI 自習書シリーズの「No.1 無料で利用できる Power BI を試しみよう」の HTML 版です。 日本マイクロソフトさんの Web サイトで Word または PDF 形式でダウンロードできますが、今回、HTML 版として公開する許可をいただきましたので、ここに掲載いたします。[2015年12月29日]

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

6.5 日付ディメンションの作成 ~Formula Language(M)~

Power BI では、日付ディメンションを作成することも簡単に行うことができます。ここまでの手順では、Power BI を利用することで、ノンコーディングで簡単にレポートを作成できることを確認してきましたが、Power BI には強力なスクリプティング機能も提供されていて、スクリプト(プログラム)を記述して、高度なデータ取得や、データ変換、クレンジング処理、そしてここで紹介する日付ディメンションの作成処理などを行うことができます。

このスクリプティング機能は、Power BI の以前のバージョンで提供されていた「Power Query」ツールに搭載されていたものなので「Power Query Formula Language」という名前があります(通称 M言語とも呼ばれています)。

ここでは、Power Query Formula Language を利用して、日付ディメンションを作成する手順を説明します。

◆ Let's Try ~日付ディメンションの作成~

1.日付ディメンションを作成するスクリプトは、SQL Server チームMatt Masson 氏のブログで提供されている、以下のものを利用すると便利です。

http://www.mattmasson.com/2014/02/creating-a-date-dimension-with-a-power-query-script/

00444

2.コピーしたスクリプトを貼り付ける場所は、次のように Power BI Desktop のクエリ エディターで、[新しいソース]で[空のクエリ]をクリックします。

00445

空のクエリ]をクリックした後に、リボンの[詳細エディター]をクリックすると、スクリプト(Power Query Formula Language)を記述できる詳細エディターを表示することができます。

3.詳細エディターに、前の手順でコピーしたスクリプトを貼り付けて、[完了]ボタンをクリックします。

00446

4.次に、[呼び出し]ボタンをクリックします。

00447

このスクリプトは、入力パラメーター付きになっていて、StartDate(開始日)と EndDate(最終日)を指定して、実行できるようになっています。前の手順で試した NorthwindJ データベースを利用している場合は、売上の「受注日」データが 2005年~2007年の間なので、StartDate には「2005/01/01」、EndDate には「2007/12/31」と指定すれば、NorhwindJ データベースで利用できる日付ディメンションを作成することができます。

5.StartDate EndDate を指定して実行すると、次のように日付ディメンションが作成されます。

00448

StartDate に「2005/01/01」を指定した場合は、この日から1日ごと2015/01/022015/01/032015/01/04・・・)に1行のデータが作成されて、それぞれ「」や「四半期」、「」、「曜日」などのデータが作成されていることを確認できます。

このように、スクリプトを実行するだけで、日付ディメンションの作成が完了です。

6.作成した日付ディメンション(クエリ)には、次のように名前を設定しておくと利用しやすくなります。

00449

◆ 週の追加 ~年の通算週や、月の通算週~

スクリプトでは、年や四半期、月、曜日に関する情報を追加しましたが、Power BI Desktop では「」に関する情報(1年の中で何週目なのかなど)も簡単に追加することができます。

1.これを行うには、次のように[Date]列を選択してから、[列の追加]タブを開いて、[日付]から[]をクリックします。

00450

年の通算週]を選択すれば、1月の第1週を基準に、年の何週目か、[月の通算週]を選択すれば、各月の第1週を基準に、月の何週目かを取得することができます。

このように、Power BI Desktop を利用すれば、日付データをもとに、日付の部分データを抜き出すことを簡単に行うことができます。また、対象列に「時間」データが入っている場合には、次のように、時間のうちの「」や「」を取り出すといったこともできます。

00451

また、「期間」に関する情報も取得することができるので、2つの日付の間の日数を取得する、といったこともできます。例えば、「注文日」と「出荷日」がある場合に、この2つの日付の期間(出荷までの日数)を取得するという使い方ができます。

なお、こうした日付/時間/期間データの加工は、内部的には Power Query Formula Language によって行われています。例えば、前述の「年の通算週」であれば、次のようにスクリプトが生成されています。

Table.AddColumn(呼び出された関数CreateDateTable, "WeekOfYear", each Date.WeekOfYear([Date]), type number)

00452

Power Query Formula Language では、Table.AddColumn メソッドで「」を追加することができ、第2引数に列の名前(WeekOfYear)、第3引数にどういったデータを追加するのか、第4引数でデータ型(type number で 10進数)を指定しています。

第3引数では、「each Date.WeekOfYear([Date])」とあり、each で「対象列の行データすべてを対象」にすることができ、Date.WeekOfYear 組み込み関数の引数に [Date] 列を指定することで、[Date] 列から年の通算週を取得するようになっています。

改めて、[詳細エディター]を開いてみると、元々のスクリプトも、Table.AddColumn メソッドで、Date.~ 関数を利用して、年や四半期、月などを取得していることを確認できます。

00453

このように、Power Query Formula Language を利用すれば、データの生成や加工処理など、さまざまな処理を自動化する目的で利用することができるので、本当に便利です。

◆ 日付ディメンションとのリレーションシップの追加

日付ディメンションを作成した後は、既存のクエリ(テーブル)とのリレーションシップを追加してみましょう(前項の SQL Server の NorthwindJ データベースを利用している場合の例)

1.リレーションシップを追加するには、レポート デザイナーで、次のように[リレーションシップ]をクリックして、[リレーションシップの追加]をクリックします。

00454

2.リレーションシップの管理]ダイアログが表示されたら[新規]ボタンをクリックします。

00455

リレーションシップの作成]ダイアログでは、参照元のテーブルに[受注]、リレーションシップを設定する列に「受注日」を選択して、参照先のテーブル(クエリ)には[日付]、列には[Date]を選択して、[OK]ボタンをクリックします。以上で、リレーションシップの作成が完了です。

3.作成されたリレーションシップは、次のように確認できます。

00456

4.このように、リレーションシップを作成していれば、日付ディメンションの列データを利用して、グラフを作成していくことができます。例えば、次のように[商品区分]テーブルの[区分名]と[日付]クエリの[DayOfWeekName](曜日名)を選択すれば、「曜日ごと、商品区分ごとの売上金額」をグラフで表示することができます。

00457

このように「曜日」を追加できれば、「土曜日は、魚介類の売上が大きい」といったことも分析できるようになります。

このように、Power BI では、日付ディメンションを簡単に作成することができます。

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

事例1

MPNロゴ


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

弊社オリジナル制作の
SQL Server 2012 自習書も
マイクロソフトのサイトで公開中!
ロングセラー
ASP.NET でいってみよう  SQL Server 2000 でいってみよう
ASP.NET でいってみよう
第7刷 16,500 部発行
SQL Server 2000 でいってみよう
第12刷 28,500 部発行


セミナー風景
セミナー風景

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

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

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

Microsoft MVP for SQL Server

松本美穂松本崇博

松本崇博 Blog(SQL Server Tips)
松本美穂ブログ(SQL Serverノート)