2016/05/09

ピボットテーブル レポート間のグループ化の動きについて

先日、Power BI の勉強会に参加して、最初の小一時間、Power Query や Power Pivot といったPower BI アドインの紹介をしました。
その紹介で Excel ユーザーにとって、昔からこれができたらいいのに!という鉄板ネタがあるんですよ、それが Power BI で解決できるんです、という話をしたのですが、これも Excel 2007 以降で「これ知っていたらいいのに」と思うもののひとつで、間接的に Power BI に関連するものがあります。

それは、1つのデータ ソース(表やテーブル)から作成した複数のピボットテーブル レポートで発生する、「グループ化の連動」への対応です。

日付のグループ化が2つのピボットテーブルで連動する
ピボットテーブル レポート(以降、ピボットテーブル)は、表形式のセル範囲やテーブルを指定して作成します。その際に Excel は「ピボットキャッシュ」を作成し、そこからピボットテーブルが作られます。Excel 2003 まではピボットキャッシュを共有するかどうかウィザードで聞かれたのですが、Excel 2007 以降はウィザードが無くなり、ピボットキャッシュは共有されるのが既定となりました。

このグループ化が連動してしまう挙動は、上述のピボットキャッシュを共有しているからです。
Excel 2003 までは、この挙動が問題ならウィザードに対して「共有しない」を選べばよい、が対応方法でした。Excel 2007 以降はこのウィザードがリボンからなくなってしまったため、ちょっとした「裏技」的な方法で Excel 2003 まであったピボットテーブル ウィザードを立ち上げて対応しましょう、と紹介されているところが多いですし、マイクロソフトのサポートの記事にもそれがあります。

ピボットテーブル レポート間のデータ キャッシュの共有解除 (support.office.com)

ピボットキャッシュを共有することにより、ブックのサイズを小さくし、使用するメモリーを少なくする効果はありますが、ピボットテーブルの良さに気づき、複数のピボットテーブルを使ってレポートを作成して、ある一つのピボットテーブルのグループ化を解除したら、すべてのピボットテーブルのグループ化が解除される、なんてことは「どうしてそうなるんだろう?」と最初は悩みました。

この Alt+D, P で 2003 まで使用していたピボットレポート ウィザードを使って、範囲を変えて、キャッシュを作り直して、また範囲を戻す、なんてことを、全てのピボットテーブルに適用することなく、解決する方法があります。

ピボットテーブルを作成する際に、データ モデルに追加するだけでいいのです。


[このデータをデータ モデルに追加する] は、通常、リレーションシップ、Power Pivot で使われます。
Power Pivot を使わなくても、このチェックを入れることで、ピボットキャッシュはそれぞれ別に作られるので、複数のピボットテーブル間で発生するグループ化の連動を避けることができます。


データ モデルに追加する方法で3つのピボットテーブルを作成したブックでピボットキャッシュの数を調べると、ちゃんと 3 と出てきました。


ブックのサイズですが、サンプルデータは5列からなる1万件のデータで以下のようになりました。

10000件のテーブルのみ 315KB
ピボットキャッシュ共有で3つのピボットテーブル 427KB
ピボットキャッシュ共有解除の3つのピボットテーブル 637KB
データ モデルに追加した3つのピボットテーブル 562KB
(ピボットテーブルはいずれも空にしてます)

データ モデルを追加するとサイズが大きくなりそうな気がしますが、非常に高い圧縮技術を使ってコンパクトにしているという技術情報がマイクロソフトから出ています。

Create a memory-efficient Data Model using Excel and the Power Pivot add-in
上記の日本語版(機械翻訳)

データをデータ モデルへ追加して、ピボットキャッシュの共有をしない設定は、ピボットテーブル作成時のみです。一度作成してしまったピボットテーブルのピボットキャッシュの共有を解除するには、Alt + D, P で 2003 のウィザードを使うか、新しくピボットテーブルを作り直すことになります。

また、[ピボットテーブル ツール] の [分析] または [オプション] タブの [データソースの変更] を使って、Alt + D, P でやるようなデータソース範囲の変更、ピボットキャッシュを別にして、また、データソース範囲を元に戻す、という方法をとっても、ピボットキャッシュは再共有されます。データソースを元のテーブルや範囲に戻すと、再度、ピボットキャッシュを共有します。
このあたりは、どうしても「共有」を前提としたいようですね。

[追記 2016/5/9] 過去にこのブログでも紹介していますが、データ モデルに追加することでピボットテーブルの集計フィールド、集計アイテムの機能が使えなくなります。同様の機能は Power Pivot の計算列、メジャーで行います。集計フィールドを使う人は注意してください。
データ モデルに追加しても「日付のグループ化」ができるようになったのが大きいですね。

0 コメント:

コメントを投稿

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