1. 概要
Power BIのレポートに表やグラフのビジュアルを作成する際に、ある項目の表示順を任意に設定する方法をご紹介します。
Power BIのビジュアルの並べ替え条件で(何も設定しないまま)その項目を指定してもアルファベットや読みなどの順に並べられ必ずしも意図通りにならないことがあります。そうしたときに、表やグラフのビジュアルにおけるフィールドの並びを設定するには [列で並べ替え]を用います。
ここでは、3つの具体的な設定事例ご紹介しながら操作を説明していきます。
2. テーブルに並べ替え用のフィールドを追加
オーダー日と顧客区分つきの売上データから、オーダー年によるカテゴリー別売上の積み上げグラフを作成するとします。レポートビューを表示し[視覚化]ウィンドウの[積み上げ縦棒グラフ]を選択し、[軸]に「オーダー日」、[凡例]に「顧客区分」、[値]に「売上」を設定し、さらに「オーダー日」は「年」を選択しておきます。すると、下図のようなグラフが作成されます。
凡例の「顧客区分」が「小規模事業者」「消費者」「大企業」の順に並んでおり、グラフもその順で下から積みあがっています。ここで、「顧客区分」は規模に従って「大企業」「小規模事業者」「消費者」の順に並べたいとします。しかし、デフォルトで文字の読みの順で並んでしまっておりこのままでは並びを変更できないようです。そこで、新たに「顧客区分」の並びを示す新たな列をテーブルに加えて、その列に従って「顧客区分」の並べ替えを設定してみることにしましょう。
まず、このテーブルに新たな列として、「大企業」が1,「小規模事業者」が2、「消費者」が3をとる条件列を追加し、この列名を「顧客区分ID」としておきます。
そして、[フィールド]ウィンドウの[顧客区分]を選択し、[列ツール]メニューから[列で並べ替え]をクリックし[顧客区分ID]を選択します。
すると、下図のとおり凡例の「顧客区分」が「大企業」「小規模事業者」「消費者」の順に並んでおり、グラフもその順で下から積み上がっています。
このように、ある列の並びを意図通りに並び替えて表示したい場合には、あらかじめ並び替えの順を示した列を用意しておきに、その列に対して[列で並べ替え]で用意した列を設定すればよいのです。ただし、このように [列で並べ替え]で特定の列を設定してしまうと、そのファイル内の別のビジュアルであっても当該列についてはこの列の通りに並ぶことになるので注意が必要です。
3. 曜日の並べ替え
つぎに、オーダー日とカテゴリーつきの売上データから、曜日別のカテゴリー別売上のグラフを作成するとします。
まず、曜日ごとに集計するために「オーダー日」から曜日のフィールドを作成します。「オーダー日」は日付型データなので、Power QueryのDate.ToText関数をで引数に”ddd”として「曜日」列を作成するすると、「オーダー日」が月曜日なら「月」という文字列が返ってきています(Date.DayOfWeekName関数でも曜日名を取得できます)。
クエリを適用してから、レポートビューを表示し[折れ線グラフ]のビジュアルを選択し、カテゴリーごとの曜日別売上の折れ線グラフを作成すると下図のようになります。
グラフの項目軸が「曜日」なのですが、「曜日」の値に漢字で入っている場合には何も設定しない状態では「火」「金」…「木」と分かりにくい並びになってしまいます。そこで、これを「月」「火」…「日」と曜日順に並ぶように設定します。
Power Queryエディターに戻り、「オーダー日」に対してPower QueryのDate.DayOfWeek関数を用いると曜日の番号の列を作成することができます。ここで、引数をDay.Mondayとしておくと月曜日が0で日曜日が6の0~6の数値が返ってきます。この列名を「weekday」としクエリを適用してから、[フィールド]ウィンドウの「曜日」を選択し[列ツール]メニューから[列で並べ替え]で「weekday」を設定します。
すると、折れ線グラフの項目軸が「月」「火」…「日」と意図通りに並び替わったことが分かります。
4. マスターテーブルを用いた並べ替え
最後に、エリアと顧客区分つきの売上データから、エリア別のカテゴリー別売上テーブルを作成するとします。
レポートビューで[マトリックス]を選択し、[行]に「地方名」と「都道府県名」、[列]に「顧客区分」、[値]に「売上」を設定すると、下図のようなテーブルが作成されます。
すると、やはりデフォルトでは「顧客区分」と「地方名」、「都道府県名」いずれも読みの順で並んでしまっています。ここでも、上記のようにテーブルに各列に対応する条件列を追加していきそれぞれ[列で並べ替え]の設定をしていけば意図通りに並べ替えることは可能なのですが、ここではマスターテーブルを作成しリレーションシップを用いて任意の並べ替えを実現してみます。
まず、エリアに関するマスターテーブルを作成します。今回は地方と都道府県の階層を成す2つのエリア区分があるので地方と都道府県の2つのマスターテーブルを用意します。エリアのマスターテーブルには一意となる主キーとして自治体コードなどによるIDのフィールドを含めておきます。ここでは、いったんcsvファイルなどで準備しておいた地方と都道府県のマスターテーブルを[データを取得]から読み込むことにします。必要であれば適宜クエリでテーブルを成型してから適用します。すると、フィールド名が「地方名」や「都道府県名」としてあればリレーションシップが自動的に設定されます。モデルビューで確認すると、以下のようにリレーションシップが設定されているはずですが、もし意図どおりに設定されていない場合にはここでマスターテーブルとファクトテーブル間もしくはマスターテーブル間のリレーションシップを手動で設定しておきます。同様に、顧客区分についてもマスターテーブルを用意し、「顧客区分」をキーにマスターテーブルとファクトテーブルの間でリレーションシップが設定されているようにしておきます。
レポートビューに戻り、[フィールド]ウィンドウの[都道府県テーブル]テーブル内の「都道府県名」を選択して [列で並べ替え]に「都道府県コード」を設定します。同様に、[地方テーブル]テーブル内の「地方名」と[顧客区分マスター]テーブル内の「顧客区分」についても[列で並べ替え]にそれぞれ「地方コード」と「顧客区分ID」を設定します。そして、表のビジュアルを選択して、行と列について各マスターテーブル内の「地方名」「都道府県名」「顧客区分」に差し替えます。すると、下図のとおり「地方名」「都道府県」は意図通りに並び替わっており、同様に「顧客区分」も「大企業」「小規模事業者」「消費者」の順に並び替わりました。
5. 最後に
以上、3つのパターンでPower BIにおける項目の並べ替えの設定方法について説明してきました。Microsoftのドキュメントにもあるように、基本的には各フィールドに対して並び順を示すフィールドを用意しておき[列で並べ替え]でそれを設定するだけのことなのですが、使用場面に応じて上の3つのパターンを使い分けると便利かと思います。
村野 直樹(Naoki Murano)