次の方法で共有


列のピボット

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 が含まれています。

Note

列のピボット操作中、Power Query は、最初の列 (テーブルの左側) で見つかった値に基づいてテーブルを昇順に並べ替えます。

列をピボットするには

  1. ピボットする列を選択します。 この例では、Date 列を選択します。

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

    [変換] タブが選択され、選択されたテーブルの Date 列、[列のピボット] オプションが強調されているスクリーンショット。

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

    [基本] が選択され、Value 列が Value に設定されている [列のピボット] ダイアログのスクリーンショット。

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

    [詳細設定] が選択され、[集計値関数] ドロップダウンが表示されている [列のピボット] ダイアログのスクリーンショット。

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

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

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

集計できない列を使用している場合や、実行しようとしている操作に集計が必要ない場合は、集計せずに列をピボットできます。 たとえば、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、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 が含まれますが、CountryDate の組み合わせごとに複数の行が存在するため、セル値ごとにエラーが発生します。 この [列のピボット] 操作では、次の図に示されているような結果が生成されます。

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

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