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

2015/02/03

リレーションシップとデータ モデル

以前の投稿でも Excel 2013 から新機能として追加されて「リレーションシップ」を紹介した。

テーブルのすすめ ピボットテーブルとリレーションシップ

このリレーションシップはテーブル間のリレーションを設定した上で、ピボットテーブル作成時に「複数のテーブルを分析するかどうかを選択」の「このデータをデータ モデルに追加する」のチェックを入れることで、ピボットテーブルのフィールド リストで利用可能になる。

またリレーションシップと同様の機能として Power Pivot の「計算列」の紹介で RELATED 関数を使った列の追加と複数テーブルの分析を可能にするピボットテーブルの作成も紹介した。

Power Pivot で計算列を作る

さらに、Power Query でも「マージ」という機能でリレーションシップ同様の結果(マージされたテーブル)を得る方法も紹介している。

Excel ユーザーのための Power Query


Excel 単体のみで利用する環境であれば、実際のところリレーショナル データベースのようなテーブルの「正規化」をすることはあまりないが、マスターデータがサーバーやクラウドといった他のシステムにある、もしくは日々のトランザクション データを他のシステムからインポートする、となると、VLOOKUP 関数や MATCH/INDEX 関数を使って複数のテーブルや表を参照しなければならないケースが出てくる。このようなケースが多くなると「リレーションシップ」の機能の利用を検討したほうが良い場合がある。

Power Pivot や Power Query という Power BI のアドインによってさまざまな可能性が提示されているが、上記のように「似たような機能」が複数あり、その選択に悩んだり、特徴を理解するのに時間がかかるのも事実である。

さらにデータ モデルを使ったピボットテーブルでは「集計フィールド」、「集計アイテム」、「日付のグループ化」ができなくなる(もちろん、それを実現するための代案もある)ということも無視できない。
[追記] 日付のグループ化はデータ モデルに追加しても可能になりました。
そこでその特徴をまとめてみた。上述のような「リレーションシップ」や「マージ」を行うと、その後工程でピボットテーブルを利用することが多いため、ピボットテーブルの利用という観点からまとめてみる。ただし、あくまで実践ワークシート協会の業務の中で実際に利用した経験上からの示唆である。

データ モデル利用の有無がポイント
上述のように似たような結果が得られる様々な機能が存在している。リレーションシップという複数テーブル間の関連を設定する方法では Excel 2013 リレーションシップとデータ モデルを使ったピボットテーブル、Power Pivot、そして Power Query のマージ機能がある。
最終的に Excel のピボットテーブルを使いたい場合、この3つの機能の関係は以下のような図で表すことができる。
DataModelExcel
Power Pivot はデータ モデルを前提とする。扱うデータは必ずデータ モデルでなければいけない。
Excel 2013 リレーションシップを設定した複数テーブル分析可能なピボットテーブルもデータ モデルを作成しなければならない。
データ モデルを使って、複数テーブルを関連づけたり、列の加工を行ったりして、そのデータを Excel のピボットテーブルに渡している、と考えられる。
データ モデルはさまざまなサーバーやクラウドを前提としているため、Excel のためだけのデータではない。そのため、本来 Excel のデータ(テーブルまたは表)を前提として用意された機能・オプションが使えなくなっていると考えると妥当だろう。
データ モデルを使ったピボットテーブルでは制限がでる、ということだ。(何度も書くが、その代替策はきちんと用意されている)

日付データのグループ化も可能な「リレーションシップ」環境
さまざまなデータ ソースを扱うことを目的としたデータ モデルは今後も拡張、発展すると考えられる。しかし、製品・サービスとしては必要だが、実務ではそれほど多様なデータ ソースを扱ってはいないのも事実だ。(今後はわからないが、少なくとも現状は多くても2~3種類だろう)
これまで同様のピボットテーブルの操作感で、リレーションシップを使って複数テーブル、複数のデータ ソースの分析をしたい、となれば、上図の構成から Excel テーブルからピボットテーブルを作るしかない。そこで出てくるのは Power Query のマージ機能だ。
Power Query のマージ機能により、複数のテーブルやデータ ソースを1つの Excel のテーブルにし、そこからピボットテーブルを作れば、これまで同様の操作性を維持することができる。
以下のような Excel のテーブルを例にとって検証してみよう。
TableSample
Excel 2013 のリレーションシップを使ったピボットテーブルや、Power Pivot から作成したピボットテーブルでは、日付のグループ化、集計フィールド、集計アイテムの利用はできない。
relationPivotNoGrouping
ここでサンプルの3つのテーブルを「マージ」したテーブルを Power Query でまず作成する。
Excel のテーブルを参照するクエリを作成するとき、同じテーブルを作成する必要はないので、「接続の作成のみ」を選ぶ。もちろん、ここではデータ モデルは作成しない。
PQ_Connection_Only
それを3つにテーブルで繰り返し、3回のマージにより1つのテーブルにする。
PQMarge
この最後のマージ(Merge3)によって出来上がったテーブルからピボットテーブルを作る。このピボットテーブルは Excel のテーブルを参照している通常のピボットテーブルなので、日付によるグループ化などが可能だ。
PQPivot
Power Pivot の意義
それでは Power Pivot の意義はないのかというと、Power Query のブック クエリのウィンドゥを見てわかるように、複雑なことをやろうとすると、クエリ、マージ、追加といった操作の繰り返しになる。Power Pivot であれば Power Pivot ウィンドゥのダイアグラム ビューを使ってビジュアルに操作が可能だ。
PowerPvVisual
テーブルの数が多くなり、リレーションシップの項目も多くなれば、Power Pivot ウィンドウによる設定の容易さは計り知れない。基幹系アプリケーションが利用しているデータベースなどは多くのテーブルが存在するため、このようなビジュアルツールでなければ設定や管理が煩雑になるだろう。

データ モデルはいつ必要になるのか
よって、Excel を中心としているユーザーにとってはデータ モデルが必須となるシーンはあまりないのが現実だ。Excel のテーブルであったり、SharePoint Online の SharePoint リストからそれほど多くないリストのインポートを Excel にして利用するのであれば、データ モデルを前提とする Power Pivot や、データ モデルを作成する Power Query のモデル OLE DB 接続にする意味はあまりない。SharePoint リスト接続や Power Query の OLE DB 接続を使い、Excel 上に展開されたテーブルを扱うことでおおよそのことができるだろう。

実践ワークシート協会の業務で唯一データ モデルが必要になるのが、Excel Online / Excel Web Access といった、Excel ブックを SharePoint Online 上で活用するときである。まだ、活用しきれていないが、Power BI もデータ モデルの Excel ブックを前提としている。
いますぐは必要ないかもしれないが、データ モデルについては今後のキーとなるので引き続きウォッチが必要だろう。

[2016/5 追記]
今後、Excelブック内でのデータ モデルは必要になります。それは Power BI service でレポートやダッシュボードを他のメンバーと共有する際に、データ モデルをベースとした処理が前提となることからです。Excelの中だけで閉じるのであればデータ モデルを作成する必要はありませんが、Power BI service などのExcel以外のサービスを利用することを考えると、データ モデルが前提となるからです。これが1年以上前と 2016年の上旬との大きな違いです。

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を返上し、アマゾン ウェブ サービス ジャパンに入社、コミュニティプログラム担当として現在に至る。