![見出し画像](https://assets.st-note.com/production/uploads/images/135194672/rectangle_large_type_2_fd37b2d91010ae0327b7ad52b6c73b63.png?width=1200)
(3)30年探求の「謎」が明らかに!「ピボットキャッシュ」
1.「半死体の呪い」は「データキャッシュ」の呪いです!
ピボット姫と学ぼう!第3回は、「半死体の呪い」でした。
ピボットテーブルを使う人は、必ずこの隠れている「データキャッシュ」を理解して、データが流出しないように、使わなければなりまん!
これまでは、十分に説明できませんでしたが、ようやくみなさんに楽しんでいただけるゲームにできました。
「呪い」は罹ったままでは困ります。「解いて」使いましょう!
目に見えないデータキャッシュを正しく理解すれば、大丈夫です!
2.ピボットテーブルは「謎」だらけ・・!!
ピボットテーブルは、「作り方」「メニュー」の操作方法、
「目に見えるもの」しか紹介されていません!
唯一紹介されていたのが、「データキャッシュ」の存在と、
内部メモリの共有、並びに、それを解除する方法の紹介でした。
ピボットテーブル レポートのデータ キャッシュは、Microsoft Office Excel がレポートのデータを格納するために使用するコンピューター上の内部メモリの領域です。 パフォーマンスを向上させ、ブックのサイズを小さくするために、Excel は、同じセル範囲またはデータ接続に基づく 2 つ以上のピボットテーブル レポート間でピボットテーブル データ キャッシュを自動的に共有します。 2 つ以上のピボットテーブル レポートのセル範囲またはデータ接続が異なる場合、それらのレポート間でデータ キャッシュを共有することはできません。
私は、専門的な技術的な部分の理解はできません。
しかし、30年使い続けてきた実践経験から、
この目に見えない、謎の「データキャッシュ」の「特性」を想像して、
実践スキルやノウハウを、みなさんに紹介してきました。
![](https://assets.st-note.com/img/1699871679409-J47CHr5Mew.png?width=1200)
「ピボットテーブルは、Excelの機能ではない!」
3.ピボットテーブルの「仕様」見つけた!
今回、偶然.、たどり着いた文書により、
「私の探求」の結果が、裏付けされました。
Microsoft Learn 検索記事から
ピボットテーブルを操作する (Open XML SDK)
2022年から掲載されているようです。
記事は英文で、翻訳されていても理解しにくいです!
「解読」に挑戦してみました。
ISO/IEC 29500 仕様書では、PivotTableDefinition 要素について
次のように説明されています。以下、抜粋で引用させていただきます。
①ピボットテーブルは、
データの集計ビューをわかりやすいレイアウトで簡単に表示します。
何百件、何千件という基になる情報を行と列の軸で集計して、
データの背後にある意味を明らかにできます。
②ピボットテーブル レポートは、
さまざまな方法でデータを整理して要約するために使用されます。
ピボットテーブル レポートの作成では、
散在する情報がどのように組み合わさるのかを確認するために
それらを移動します。
③ピボットの行と列は、
わずかな操作で別の配置やレイアウトに移動できます。
ピボットテーブルを使い続けている人なら、だれでも理解できます。
しかし、活用については、驚くほどの差になります。なぜでしょう??
4.ピボットテーブルの構造を理解しよう!
⇒ Excelの集計「機能」ではなく、データ分析の専用ツール!
①「階層」行、列、データ、フィルター4つの領域[エリア]に
ピボットキャッシュを配置(ピボット)表示する
②「ノード」(網状構造の構成要素)データが連係
・祖先、親、子、孫 ・・
(1)Excelに表示されるもの
ピボットテーブルオブジェクト
行の軸、列の軸、値、およびレポート フィルターの4つ領域 area
フィールド リスト ウィンドウ・・データのすべてのフィールド表示
※オブジェクトモデルは、VBAマクロやPowerAutomatic
など操作の自動化に使われる際の「定義」の関係を示しています。
操作はできますが、ピボットテーブルの構造・中身は「不明」です。
![](https://assets.st-note.com/img/1684913066608-OPVXB9aZFN.png?width=1200)
(2)Excelに表示されない・・隠れているもの
「ピボットテーブル定義」 PivotTableDefinition
①ピボットフィールド pivotField
②ピボット キャッシュ定義 pivotCacheDefinition
③ピボット キャッシュ レコード pivotCacheRecords
「ピボットテーブル定義」
ピボットテーブル定義の主な機能は、情報を格納すること。
ルート要素 ・・ピボットテーブルに名前をつける
ピボットテーブルの場所、
キャッシュされたフィールドの表示情報、
キャッシュされたフィールドの位置情報です
![](https://assets.st-note.com/img/1684917316913-4U8YuG7TRH.png)
①ピボットフィールド・・4つのエリアに設定
フィールド は「元データの項目列」として理解しています。
外部データを含まない場合には、Pivot階層と同じです。
アイテムのコレクション フィールドの値
⇒フィールドはデータのキャッシュとして機能し、
ピボットテーブルの4つの領域[エリア]に適用されます。
ピボットフィールドクラス・プロパティの説明にあった「集合関数」!!
値フィールドの「集計関数」合計、平均・・ 集計に適用するものです!
私は、今まで「関数のような計算」と 説明していました。
これからは、
データキャッシュを「集計関数」で計算していますと、説明できます!
フィールドに関する様々な設定が紹介されています!
![](https://assets.st-note.com/img/1684762386299-Su4UarQ0SD.png?width=1200)
②ピボット キャッシュ定義
この部分は、非常に重要なので、そのまま引用紹介させていただきます。
ピボットキャッシュは、ピボットテーブル内のデータのソースを定義
これにより、ピボットテーブルを更新でき、そのデータ内のフィールドの一覧が定義されます。
キャッシュでは、実際に使用されるフィールドではなく、ピボットテーブルで使用できるすべてのフィールドが定義されていることに注意・・。
ピボットテーブル内のすべてのフィールドの定義が含まれています。
通常のテーブルに基づいてピボットテーブルを作成すると、
テーブル内の各列がピボット キャッシュ定義のフィールドになります。
ピボット キャッシュには、フィールド定義と、そのフィールドで見つかったコンテンツの種類に関する情報が含まれています。
データ ソース定義は、ピボットテーブルに表示されるデータを参照します。
キャッシュ定義の最後の部分では、CacheField 要素を使用してデータ ソースのフィールドを定義します。CacheField 要素は、フィールドのデータ型および書式設定の定義と、共有文字列のキャッシュという 2 つの目的で使用されます。
〇ピボットテーブルに表示されるデータ
ピボットテーブルに表示されるデータは、2 つの場所に格納されます。
ピボット キャッシュ レコード パーツは、ピボットテーブルの実際のデータを保持します。 ワークシートのテーブル セルには、キャッシュされたバージョンのデータも格納されますが、これは※表示のみを目的としています。
※表示のみを目的・・「ドリルスルー」のように理解します(私見)
③ピボット キャッシュ レコード
個々のピボットテーブルのデータキャッシュです。
私には、解説を読んでも、なかなか理解できません。
但し、ブック全体のピボットキャッシュは効率化されて格納される
ピボットテーブル単位でのデ―タのキャッシュは、様々に活用できる
という、違いがあるのでしょう。
何と言っても、マウス操作で、レポートが瞬時に変えられるのです・・
ピボット キャッシュ レコードパーツには、集計される基になるデータが含まれます。これは、ソース データのキャッシュです。キャッシュ レコード パーツには、任意の数のキャッシュ レコードを格納できます。各レコードには、キャッシュ定義のフィールドと同じ数の値が定義されています・・。このレコードには、子要素として値項目が含まれます。数値、ブール値、日時などの特定の型指定された値を指定することも、共有アイテムを参照することもできます。
5.Excelとは「構造」が違います!
ピボットテーブル専用「メニュー」で活用!
これまでは、手探りで、データキャッシュを想像していました。
それが、この文書により、理解が深まり、裏付けされました。
![](https://assets.st-note.com/img/1685497654979-X2ub3eCnfs.png?width=1200)
オプション設定では、個別のピボットテーブル、データキャッシュ共有に区別されます。この裏の仕組みが、ピボット キャッシュ レコード と、全体共通のピボットキャッシュである。自信をもって説明できます!
![](https://assets.st-note.com/img/1685497880439-3JZdsSSvah.png?width=1200)