先日業務で複数のテーブルを統合したうえで集計をしなければならない状況にがあったため、その時に用いた集計技術を備忘録として記録します。
この機能の使用が想定されるケースはとしては、以下のものが挙げられる。
ケース1.各支店毎のデータを全社的に統合し、集計する必要がある場合
ケース2.営業日数で集計されたデータを実日数に変換する必要がある場合 (OUTER JOIN)
1.サンプルデータセットとして、以下のようなデータセットを使用。(Kaggleにより提供されている「BlackFriday」のCSVデータセットを使用。データサイズは約24MB)
課題である複数テーブルを作成するために取得したデータセットをシートを2つに分割しています。
2.ピボットテーブルの「複数のワークシート範囲」機能を用いて、2つのテーブルを統合したうえで集計を行うことができます。
なお、この機能を使用する際には、「親列 (親フィールド)」というものを決定する前処理が必要であるため、先ずはその方法を紹介します。
3.「親列 (親フィールド)」とは、SQLでいうところのOUTER JOINでテーブルを統合する際の「ON 列1 = 列2」というような結合キーに相当するものだと類推的に考えると、理解しやすいかも知れません。
上で記載した必要な前処理とは、OUTER JOINの際に使用するキーをデータセットの先頭に移動することです。
4.今回は結合キーとして使用したいキーを「Product_ID」としたいと思います。「Product‗ID」が存在するB列をクリックし、セル範囲をアクティブにします。
「Shift」キーを押しながら、セルの境界線をクリックすると列をまとめて移動させることができます。
「親列 (親フィールド)」に設定するというのは、端的に表現すると、データセットの先頭列(A列)に移動することです。
この動作は集計の対象とするデータセットのすべてにおいて適用する必要があります。
5.「Alt → D → P」という順でキーボードを押下しピボットテーブルウィザードを立ち上げます。
(このピボットテーブルウィザードは「リボンにないコマンド」ですので、「ファイル」タブで設定をしない限りGUIに表示されません。そのため、コマンドを記憶、記録しておくことをお勧めします。)
今回の課題では「複数のワークシート範囲」と「ピボットテーブル」を選択したうえで、「次へ」を選択します。
7.次に結合集計の対象となるテーブルを選択します。少なくとも「範囲一覧」は必ず設定する必要があります。
※ページフィールド数の指定は、必須で指定すべき項目ではありませんが、設定をすることで、統合集計後にも「レポートフィルター」機能を用いて、各シート毎の集計結果を見ることができるようになります。
10.今回は「値」に指定した集計関数は「SUM (合計)」としましたが、通常どおりCOUNTやMAX、MINなど複数の集計関数を利用することができます。
注意点1:
以下のように、単一テーブルでの集計時のように個別フィールドへのアクセスが出来なくなります。
注意点2:
「複数のワークシート範囲」機能を用いた集計は各データセットの構造が同一でなくても実施することができますが、2つの条件を満たす必要があります。
第一に、集計の対象となるテーブルの全てに同一の結合キーが存在する必要がある点です。今回では「Product_ID」に相当します。(フィールド内のエンティティ(値)に関しては重複の有無は問いません。)
第二に、各テーブルに結合キーとそれ以外の何らかのフィールドが1つ以上必要です。