列のピボット
[アーティクル] 2024/05/22
3 人の共同作成者
フィードバック
この記事の内容
Power Query では、列内の一意の値ごとに集計値を含むテーブルを作成できます。 一意の値ごとにグループ化され、各値の集計計算が実行され、列が新しいテーブルにピボットされます。
左側に空白の列と行があるテーブルを示す図。 Attributes 列には 9 つの行が含まれ、A1、A2、A3 が 3 回繰り返されています。 Values 列には、上から下に値 V1 ~ V9 が含まれています。 列がピボットされた結果、右側のテーブルには空白の列と行があり、列ヘッダーとして Attributes の値 A1、A2、A3 が含まれています。また、A1 列には値 V1、V4、V7 が、A2 列には値 V2、V5、V8 が、A3 列には値 V3、V6、V9 が含まれています。
次の図のようなテーブルを考えます。
Text データ型として設定された Country 列、Data データ型として設定された Date 列、整数データ型として設定された Value 列を含むテーブル。 Country 列には、最初の 3 行に USA、次の 3 行に Canada、最後の 3 行に Panama が含まれています。 Date 列の行 1、4、7 に日付、行 2、5、8 に 2 番目の日付、行 3、6、9 に 3 番目の日付が含まれます。
このテーブルでは、国と日付別の値が単純なテーブルに含まれています。 この例では、次の図に示すように、このテーブルを日付列がピボットされたテーブルに変換します。
Text データ型で設定された Country 列と、整数データ型として設定された最初、2 番目、および 3 番目の日付列を含むテーブル。 Country 列には、行 1 に Canada、行 2 に Panama、行 3 に USA が含まれています。
注意
列のピボット操作中、Power Query は、最初の列 (テーブルの左側) で見つかった値に基づいてテーブルを昇順に並べ替えます。
列をピボットするには
ピボットする列を選択します。 この例では、Date 列を選択します。
[任意の列] グループの [変換] タブで、[列のピボット] を選びます。
[列のピボット] ダイアログ ボックスの [値列] ボックスの一覧で、[Value] を選択します。
既定では、Power Query は、集計として合計が計算されますが、[詳細設定] オプションを選択すると、他の使用可能な集計を表示できます。
使用可能なオプションは次のとおりです。
集計しない
カウント (すべて)
カウント (空白なし)
最小値
最大値
中央値
合計
Average
集計できない列を使用している場合や、実行しようとしている操作に集計が必要ない場合は、集計せずに列をピボットできます。 たとえば、Country 、Position 、Product をフィールドとして持つ次の図のようなテーブルを考えます。
Country 列の最初の 3 行に USA、次の 3 行に Canada、最後の 3 行に Panama が含まれているテーブル。 Position 列には、行 1、4、7 に 1st Place、行 2、5、8 に 2nd Place、行 3、6、9 に 3rd Place が含まれています。
たとえば、このテーブルの Position 列をピボットして、その値を新しい列として設定するとします。 これらの新しい列の値には、Product 列の値を使用します。 Position 列を選択し、[列のピボット] を選択して列をピボットします。
[列のピボット] ダイアログ ボックスで、値列として Product 列を選択します。 [列のピボット] ダイアログ ボックスで、[高度] オプション ボタンを選択してから、[集計しない] を選択します。
この操作では、次の図に示されているような結果が生成されます。
Country、First Place、Second Place、Third Place の各列を含むテーブル。Country 列には、行 1 に Canada、行 2 に Panama、行 3 に USA が含まれています。
[集計しない] オプションの動作では、ピボット操作によって 1 つの値が取得され、列と行のペアの交差部分の値として配置されます。 たとえば、次の図のようなテーブルがあるとします。
Country、Date、Value の各列を含むテーブル。 Country 列には、最初の 3 行に USA、次の 3 行に Canada、最後の 3 行に Panama が含まれています。 Date 列には、すべての行に 1 つの日付が含まれます。 Value 列には、20 から 785 の間のさまざまな整数が含まれています。
Date 列を使用してそのテーブルをピボットし、Value 列の値を使用する必要があります。 このピボットにより、テーブルでは行に Country の値、列として Date が含まれますが、Country と Date の組み合わせごとに複数の行が存在するため、セル値ごとにエラーが発生します。 この [列のピボット] 操作では、次の図に示されているような結果が生成されます。
「Expression.Error: 列挙内の要素が多すぎるため、操作を完了できません。」というエラー メッセージが表示されることに注意してください。 このエラーは、集計しない 操作で国と日付の組み合わせが 1 つの値のみを想定しているために発生します。