列のピボット

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 に 6/1/2020、行 2、5、8 に 7/1/2020、行 3、6、9 に 8/1/2020 が含まれています。

このテーブルでは、国と日付別の値が単純なテーブルに含まれています。 この例では、次の図に示すように、このテーブルを日付列がピボットされたテーブルに変換します。

列のピボットの最終的なテーブル。

Text データ型に設定されている Country 列と、整数データ型として設定された 6/1/2020、7/1/2020、8/1/2020 列を含むテーブル。 Country 列には、行 1 に Canada、行 2 に Panama、行 3 に USA が含まれています。

注意

列のピボット操作では、テーブルの左側にある最初の列の値に基づいてテーブルが昇順に並べ替えられます。

列をピボットするには

  1. ピボットする列を選択します。

  2. [変換] タブの [任意の列] グループで、 [列のピボット] を選びます。

    [列のピボット] コマンド。

  3. [列のピボット] ダイアログ ボックスの [値列] ボックスの一覧で、 [Value] を選択します。

    [列のピボット] ダイアログ ボックス。

    既定の Power Query では、集計として合計が計算されますが、 [詳細設定] オプションを選択すると、他の使用可能な集計を表示できます。

    列のピボットの集計。

使用可能なオプションは次のとおりです。

  • 集計しない
  • カウント (すべて)
  • カウント (空白なし)
  • 最小値
  • 最大値
  • 中央値
  • 合計
  • 平均

集計できない列のピボット

集計できない列を使用している場合や、実行しようとしている操作に集計が必要ない場合は、集計せずに列をピボットできます。 たとえば、CountryPositionProduct をフィールドとして持つ次の図のようなテーブルを考えます。

集計のない列のピボット。

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 列を選択し、 [列のピボット] を選択して列をピボットします。

Position 列が選択され、[変換] タブに [列のピボット] コマンドが表示されているテーブル。

[列のピボット] ダイアログ ボックスで、値列として Product 列を選択します。 [列のピボット] ダイアログ ボックスで、 [高度] オプション ボタンを選択してから、 [集計しない] を選択します。

[値の集計関数] が [集計しない] に設定されている [列のピボット] ダイアログ ボックス。

この操作では、次の図に示されているような結果が生成されます。

集計を使用しない列のピボットの結果

Country、1st Place、2nd Place、3rd Place の各列を含むテーブル。Country 列には、行 1 に Canada、行 2 に Panama、行 3 に USA が含まれています。

[集計しない] オプションを使用する場合のエラー

[集計しない] オプションの動作では、ピボット操作によって 1 つの値が取得され、列と行のペアの交差部分の値として配置されます。 たとえば、次の図のようなテーブルがあるとします。

集計を使用しない列のピボットのエラーの例の初期テーブル

Country、Date、Value の各列を含むテーブル。 Country 列には、最初の 3 行に USA、次の 3 行に Canada、最後の 3 行に Panama が含まれています。 Date 列には、すべての行に 2020 年 6 月 1 日の日付が含まれています。 Value 列には、20 から 785 の間のさまざまな整数が含まれています。

Date 列を使用してそのテーブルをピボットし、Value 列の値を使用する必要があります。 このピボットにより、テーブルでは行に Country の値、列として Date が含まれますが、CountryDate の組み合わせごとに複数の行が存在するため、セル値ごとにエラーが発生します。 [列のピボット] 操作では、次の図に示されているような結果が生成されます。

集計を使用しない列のピボットのエラーの例の最終的なテーブル

Country と 6/1/2020 の列を含むテーブルが表示されている Power Query エディター ウィンドウ。 Country 列には、行 1 に Canada、行 2 に Panama、行 3 に USA が含まれています。 6/1/2020 列のすべての行にエラーが含まれています。 テーブルの下には別のペインがあり、"列挙内の要素が多すぎるため、操作を完了できません" というメッセージと共に式エラーが表示されています。

"Expression.Error: 列挙内の要素が多すぎるため、操作を完了できませんでした" というエラー メッセージに注意してください。 このエラーは、 [集計しない] 操作では、国と日付の組み合わせに対して 1 つの値のみを想定しているために発生します。