ラベル 計算列 の投稿を表示しています。 すべての投稿を表示
ラベル 計算列 の投稿を表示しています。 すべての投稿を表示

2017/02/27

[Power BI] Excel ユーザーにとっての「メジャー」とは?

先日の Power BI勉強会#3、ご参加ありがとうございました。
ご参加いただいた方で、これから Power BI を勉強したい、という人が多かったのですが、Power Pivot や Power BI Desktop を使いはじめると、早い段階で「計算列」と「メジャー」について学ぶことになります。「計算列」は Excel ユーザーにとっても馴染みがありますが、「メジャー」はなかなか理解しづらいという話をよく聞きます。

例えば、「Power BI メジャーとは」でインターネット検索すると、マイクロソフトの以下のコンテンツを見つけることができます。Power BI 関連のコンテンツは、このご時世でも結構日本語化されているんですよ。

Power BI Desktop のメジャー
https://powerbi.microsoft.com/ja-jp/documentation/powerbi-desktop-measures/

チュートリアル:Power BI Desktop で独自のメジャーを作成する
https://powerbi.microsoft.com/ja-jp/documentation/powerbi-desktop-tutorial-create-measures/

実は Excel ユーザーにとってメジャーを理解する近道、もしくは Power BI Desktop を理解するポイントは、Excel のピボットテーブルと比較するのが一番だと思います。

Power BI Desktop を操作するときは、テーブル、フィールド、レコードを扱いますが、「セル」という概念はありません。Excelユーザーが Power BI Desktop でデータを扱うとき、このセルのイメージが邪魔をすることがあります。
同じように、Excel ピボットテーブル レポートを作成する場合、表やテーブルをデータソースとして範囲指定した後は、テーブルのフィールドをドラッグ&ドロップしてピボットテーブル レポートを作ります。そこにセルの概念はありません。


この操作は、Power BI Desktop でもほぼ同じ操作性です。

ピボットテーブル レポートの作成で、数値しか含まないフィールドのチェックボックスをオンにして選択すると、そのフィールドが「数値」であることを Excel が判断して、Σ 値エリア(ボックス)に追加し、「数値」の列であることから「合計」の計算を自動的に行います。その結果はピボットテーブル レポートに自動的に追加されます。


これを「暗黙のメジャー」と呼びます。そうなんです。これが「メジャー」なんです。
つまり、メジャーとは、テーブルから何等かの計算結果を求めるための仕組みです。Excel の場合は、ピボットテーブル レポートを作成する際に、合計を求めたり、平均を求めたり、最大値や最小値をもとめる、個数を数える、といった「計算結果」を集計方法から選択することができます。


重要なポイントは、この設定では元のテーブルやワークシートに列を追加して数式を入れたり、集計行を追加しセルに数式をいれた結果を参照していません。元のテーブルやワークシートに対して、なんら列や行の追加・修正をせずに計算結果を求めています。

「暗黙の」と呼ばれるのは、数値列であれば自動的に合計が既定になり、その他平均などのメジャーが用意される、という意味です。そのため、Power BI Desktop では数値フィールド名の先頭にΣマークがつきます。

Excel のピボットテーブルの [値フィールドの設定] と [集計方法] で合計や個数、平均といった計算を指定するように、Power BI Desktop でも [値 フィールド] のドロップダウン リストから計算方法を変更することができます。


そして、Excel ピボットテーブル レポートで設定できる、もう一つの計算方法のグループがあります。[値フィールドの設定] の [計算の種類] タブを選択すると、以下のような計算の種類を選択することができるドロップダウン リストが表示されます。


比率を計算するもの、累計を扱うもの、順位を扱うものなどを選択することができます。
同様の計算すべてを Power BI Desktop でやるには、一部ダイアログの設定で可能なものもありますが、多くはメジャーを「自分で」作成することになります。その時に処理を記述するのが、ワークシート関数に似た DAX (Data Analysis eXpressions) と呼ばれるものです。

Excelユーザーからすると、ピボットテーブル レポートの「計算の種類」で設定するだけで結果を得られるものを、DAXを使った数式でメジャーを作る「手間」がかかります。そのかわり、「計算の種類」には無い複雑な計算を独自に作成することができるようになります。

過去に私のブログで上記と似た内容を投稿しているのでそちらも参照ください。

Power BI Desktop - Excel とどこが違うのか(2)
https://road2cloudoffice.blogspot.jp/2016/04/power-bi-desktop-excel-2.html

DAXについては日本マイクロソフト Data Platform Tech Sales Team Blog さんの DAX 入門シリーズが参考になります。
連載:DAX入門
https://blogs.msdn.microsoft.com/dataplatjp/dax/

先日の勉強会で「四半期がうまく扱えなくて・・・」という質問をいただきましたが、プロパティの設定変更等では対応できません。カレンダーテーブルを作成して対応します。この件は、上記の DAX 入門の「カレンダーテーブルの作成」に解説がありますので、是非ご一読ください。

Power BI Desktop のメジャーは、Excel ピボットテーブルの [集計方法] や [計算の種類] であり、かつ DAX による数式を作成して独自の計算をすることが可能な仕組みです。
GUI のオートフィルターのフィルターオプションで指定する条件なども DAX を使って数式で指定することが可能です。その結果を「メジャー」として定義して、さらに作成したそのメジャーを使って、他のメジャーで計算が可能です。このメジャーの作成に慣れてくると、分析用の事前準備ではなるべくデータにフィルターをかけずにテーブルを扱うことができたら、と感じます。
前にご紹介した、データ分析の事前準備の Power Query で、本当にデータの絞りこみが必要かどうかは、この DAX によるメジャー作成に慣れているかにもよるでしょうね。

2014/11/26

PowerPivot で計算フィールドを使う

Excel の Pivot テーブルの集計アイテムや集計フィールドを使いこなすのはなかなか難しいが、もし使いこなしているとすれば、PowerPivot で同様に機能を提供する「計算列」や「計算フィールド(メジャー)」の考え方は問題ないであろう。

PowerPivot で「集計アイテム」や「集計フィールド」がグレイアウトされて選択できない状態になるが、これはこれまでの制限の裏返しでもある。

以下の Excel のピボットテーブルの Office Online の記事「ピボットテーブル レポートで値を計算する」を読むとわかるが、ことあるごとに「OLAPデータベースサーバーのデータは使えない、OLAPの管理者の問い合わせてください」というくだりが出てくる。

Office Online 「ピボットテーブル レポートで値を計算する」
http://office.microsoft.com/ja-jp/excel-help/HP010096323.aspx

逆に、PowerPivot を使えば、これまでの「集計アイテム」や「集計フィールド」は使えなくなるが、PowerPivot の「計算列」や「計算フィールド」を使うことで、データソースの種類に関係なく、Excel のピボットテーブル レポートを作成することができる、と言える。OLAP のデータも、Excel のテーブルもデータ モデルとして扱うことで、それが可能になるのである。

データ モデルという仕組みが、どんなデータであろうと Excel に対して共通のインターフェースを提供し、Excel 側では単一のツールでさまざまなデータソースのデータを利用できるメリットは大きい。

特に Office 365 と Excel の組み合わせでは、このデータ モデルによるデータソースの多様化の恩恵を PowerPivot や PowerQuery を使うことで最大限に受けることが可能になる。

話が逸れてしまったが、あらためて Excel はエンドユーザー側のフロントエンドのツールとして、レポート作成に使われたり、分析に使われたりする機会が多くなるだろう。そのため、PowerPivot などの機能を習得することは無駄にはならないはずである。

計算フィールド(メジャー)を定義する

計算列はすでに紹介したが、実際のところ計算列は理解するのにそれほど苦労はないだろう。ワークシートのような PowerPivot ウィンドウのデータビューの「列の追加」での操作は、ポイントとなる DAX 関数さえ知っていれば Excel ユーザーとっては慣れたものであろう。


一方で計算フィールドは計算列ほど単純ではないと感じるユーザーも多いかもしれない。
一番わかりやすいのは、数量などの合計をピボットテーブルでも計算するが、=SUM() などの計算式を入れずに「値フィールドの設定」から選択して使うことが多いだろう。これを PowerPivot では「暗黙的な計算フィールド」と呼んでいる。ピボットテーブルのフィールドリストの「Σ 値」のエリアに配置されるものだ。


計算フィールドの作成方法は2つの方法が存在している。ひとつは Excel の PowerPivot タブの計算にある [計算フィールド] を使う方法。もうひとつは PowerPivot ウィンドウのデータ ビューで「計算領域」に記入する方法である。

PowerPivot タブの[計算フィールド]

PowerPivot ウィンドウの計算領域での計算フィールドの設定

計算フィールドそのものの解説や、計算フィールドの利用方法や設定方法、計算フィールドと計算列の違いなどは以前紹介した自習書やピボットテーブルの解説を参照してほしい。重要なのは PowerPivot を使ったからといってピボットテーブル レポート内で数式を使った計算(集計アイテム)ができないことはない、ということだ。

PowerPivot 自習書
SQL Server 2012 自習書シリーズ
PowerPivot for Excel によるセルフ サービス分析

Office Online - ピボットテーブル レポートで値を計算する
http://office.microsoft.com/ja-jp/excel-help/HP010096323.aspx

Office Online - PowerPivot での計算フィールドの作成
https://support.office.com/ja-jp/article/PowerPivot-%E3%81%A7%E3%81%AE%E8%A8%88%E7%AE%97%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E4%BD%9C%E6%88%90-D3CC1495-B4E5-48E7-BA98-163022A71198?ui=ja-JP&rs=ja-JP&ad=JP

特に通常の Excel であれば条件付き書式を使ったデータの可視化、データ分析では KPI と称されることが多いが、これを集計フィールドの KPI アイコンとして設定することができる。この方法も自習書シリーズで解説されているので参考できるだろう。

2014/11/21

PowerPivot で計算列を作る

PowerPivot や Excel 2013 以降の新機能である「リレーションシップ」を使いテーブルをデータ モデルに追加するとピボットテーブルの「グループ化」や「集計フィールド」、「集計アイテム」が使えなくなることはすでに紹介した。

http://road2cloudoffice.blogspot.jp/2014/11/powerpivot.html

結論から言えば「データ モデル」を使った場合は PowerPivot を併用しないと、これまでピボットテーブルで行っていたことができないと思ってもいいだろう。前回は「階層」を使ったグループ化を紹介したが、今回は集計フィールドや集計アイテムに相当する「計算列」と「計算フィールド」について紹介する。

なお、繰り返しになるが、データ モデルを使うことで「グループ化」や「集計フィールド」や「集計アイテム」が使えなくなり、「新しい Excel 使えない」と早合点しないでほしい。そもそも PowerPivot は SQL Server や SQL Server Analysis Services と Excel を使った「データ分析」のために作られた Excel のアドイン機能であり、そのような分析のための機能は当然持っている。
そして、わざわざデータ モデルを使う理由はある。一つの例として巨大なデータを扱えることだ。データ モデルにすることでワークシートの制限がはずれ、100万行をゆうに超えるデータを扱えるようになるからだ。PowerPivot で扱う元データが数千万件であっても問題ない。そして、何件まで扱えるかは PC に搭載されているメモリーに依存する。そのため、そのような巨大なデータを扱う場合は Windows は 64bit を使い、Excel も 64 bit 版のものを使うことが推奨される。

計算列はすべてのレコードを対象に計算する

計算列や計算フィールドは PowerPivot ウィンドウで設定する。ここで設定をすることで、Excel のピボットテーブルのフィールドリストに表示され利用可能になる。そこからはこれまでのピボットテーブルと同様の操作性を提供することになる。

以下のようなリレーションのテーブルを例にして説明する。


個人売上テーブルのデータは「日付」、「名前」、「商品」、「個数」しかない。ここに売上金額の計算結果を追加したい、というケースだ。

個人売上テーブルの PowerPivot ウィンドウのデータビューが以下になる。


欲しいのは商品の単価と、個数と単価を掛け合わした金額である。
すでに個人売上テーブルと商品テーブルは「商品コード」(A,B,C,,,)でリレーションを張っているので、商品テーブルから「単価」の列をこの個人売上テーブルに追加する。
そのときに使うのが DAX 関数の RELATED 関数である。RELATED 関数を使うことで、関連付けられているテーブルから該当する「単価」が参照できる。Excel の VLOOKUP 関数のような働きをすると考えれば理解しやすいであろう。
以下がその操作である。Excel 同様に数式オートコンプリートも使える。非常に簡単なのがわかると思う。


次に個数と単価を掛け合わせた金額の計算列を追加する。これは Excel の数式とまったく同じ操作性だ。しかし、1点注意しなければならないのは Excel のテーブル同様、構造化参照の数式のように、最初の行に数式を入力することですべての行に対して同じ数式が入力されることだ。


これで金額の計算列が追加された。ここからピボットテーブルを作ってみよう。
そうすると、先ほど追加した計算列の「単価」と「金額」がフィールドリストにも表示されていることが確認できる。


個人売上テーブルには「商品名」はなかったが、商品テーブルとリレーションを張っているのでピボットテーブルでは参照可能だ。このためわざわざ商品名を RELATED 関数で参照する必要はない。


計算列ではほぼワークシート関数と同じものを使用することができる。
IF なども利用可能なので、単純な数値演算だけでなく、論理演算も可能だ。
Excel をすでに使いこなしているユーザーであれば、PowerPivot の計算列をすぐに活用できるだろう。

長くなったので、次回で「計算フィールド」について紹介したい。計算列がすべてのレコードを対象にして計算するものであり、計算フィールドは「ある条件で絞られたレコードを対象に計算する」と考えれば理解しやすいだろう。

マイクロソフトの記事
PowerPivotの計算列
https://support.office.com/ja-jp/article/PowerPivot-%E3%81%AE%E8%A8%88%E7%AE%97%E5%88%97-a0eb7167-33fc-4ade-a23f-fb9217c193af?ui=ja-JP&rs=ja-JP&ad=JP

PowerPivotの自習書
SQL Server 2012 自習書シリーズ
PowerPivot for Excel によるセルフ サービス分析
Powered by Blogger.

自己紹介

自分の写真
1989年新卒で日本IBMに入社しダウンサイジング担当としてホストコンピュータと繋げるオフコン、UNIX、PCサーバーのプロジェクトを担当。1997年 MSKK(現日本マイクロソフト)入社、NT4出荷に伴い企業向けサポート部門のビジネスマネージャーとして Excel 使いとなり、2002年 にMSMVPなどをサポートするユーザーコミュ二ティ部門を設立、部門をリード。2006年にMSKK退職後、企業向けのITトレーニング会社・団体に携わり、2014年頃よりPowerBI勉強会主催メンバーの一人として参画、そのコミュニティ活動で MSMVP for Data Platform PowerBI 2017受賞。https://mvp.microsoft.com/ja-jp/PublicProfile/5002635 同年にMVP Awardを返上し、アマゾン ウェブ サービス ジャパンに入社、コミュニティプログラム担当として現在に至る。