それでは、「管理が楽になるデータの持ち方」の続きとして、次の内容に入っていきます。今回のテーマは、「グラフ項目の並び順をコントロールする」です。
Power BIでグラフを作成していると、「この順番で表示したいのに、思ったような順番にならない」という経験をすることがあります。これは、ExcelとPower BIなどのデータベース型のツールでは、データの扱い方に少し違いがあるためです。
Excelでは、表の上から順番にデータが並んでいること自体に意味を持たせることがあります。たとえば、「4月、5月、6月……」という順番で並んでいることが、そのまま意味のある情報になります。
一方、データベースの世界では、「データがどの順番で保存されているか」ということは、基本的にはそれほど重要ではありません。重要なのは、「どのようなデータが入っているのか」ということです。そのため、Power BIでも、Excelのように「入力した順番がそのまま表示される」とは限りません。
もちろん、数値や日付であれば、昇順・降順による並べ替えができます。売上金額を小さい順から大きい順に並べたり、日付を古い順から新しい順に並べたりすることは簡単です。「社員ID」のように、E001・E002……と番号が付いている項目も、何もしなくても番号順に並びます。
しかし、漢字で入力された項目については、単純な昇順・降順では、必ずしも期待した順番になりません。今回は、経費申請のサンプルデータの「課」を例に、実際に見ていきましょう。
「社員マスタ」には、社員ID・社員・フリガナ・課・課の並び順・部・部の並び順、という7つの列があります。「フリガナ」「課の並び順」「部の並び順」の3つは、今回のためだけに用意した列です。
まず、何も設定せずに並べてみます。レポートビューで「テーブル」のビジュアルを選び、「課」と「金額」を入れてください。
すると、「開発一課・開発二課・経理課・総務課・第一営業課・第二営業課」という順番になります。営業の2つの課が最後に回り、総務部の中でも経理課が総務課より先に来てしまいました。
これは、漢字を機械的な順番で並べた結果です。人間の目には、意味のない並びに見えますね。
業務上は、「第一営業課・第二営業課・開発一課・開発二課・総務課・経理課」のように、部の順番に沿って並んでいてほしいわけです。しかし、この意図は、文字列の昇順・降順では表現できません。
そこで、「並び順を管理するための列」が必要になります。それが「課の並び順」の列です。
1 第一営業課
2 第二営業課
3 開発一課
4 開発二課
5 総務課
6 経理課
というように、それぞれの課に番号を付けておきます。そして、Power BIでは、この番号を基準として「課」を並べ替えるように設定します。「表示したい項目」と「その項目を何番目に表示するか」という情報を、分けて持っておくわけです。
設定は、テーブルビューで行います。「社員マスタ」を開き、並べ替えたい「課」の列を選択してください。リボンに「列ツール」タブが表示されますので、その中の「列で並べ替え」をクリックし、「課の並び順」を選択します。
これで、「課」の列は、自身の文字列ではなく「課の並び順」の番号を基準に並ぶようになります。レポートビューに戻ると、先ほどのテーブルが「第一営業課・第二営業課・開発一課・開発二課・総務課・経理課」の順に変わっています。
「部」の列にも、同じように「部の並び順」の列(営業部=1・開発部=2・総務部=3)を用意してあります。時間があれば、「部」にも同じ設定をしてみてください。なお、棒グラフで試す場合は、既定では金額の大きい順に並ぶので、ビジュアルの右上の「…」の「軸の並べ替え」で「課」を選んでから確認してください。
もう一つ、並び順で困る場面があります。人の名前です。今度は横棒グラフを選び、Y軸に「社員」、X軸に「金額」を入れて、「軸の並べ替え」で社員の昇順にしてみてください。「阿部・池田・石川……」のような五十音順にはならず、漢字の文字コード順に並んでしまいます。
この場合も、考え方はまったく同じです。「社員」の列を選択して「列で並べ替え」をクリックし、「フリガナ」を選びます。並び順を管理する列は、数字でなくても構いません。フリガナは文字列ですが、カタカナは五十音の順に文字コードが並んでいるので、そのまま並び順の基準として使えるのです。
レポートビューで確認すると、横棒グラフの社員名が「阿部・池田・石川・伊藤・井上……」と、上から五十音順に並びます。Excelでも、名前の並べ替えにはフリガナの列を持っておくのが定石でしたが、Power BIでも同じ考え方が通用します。顧客名や商品名を五十音順に並べたいときに、思い出してください。
一つだけ、注意点があります。「列で並べ替え」は、1つの値に対して並び順の値が1つに決まっている必要があります。たとえば、同姓同名の社員が2人いて、フリガナが違う(読みが違う)場合、「社員」と「フリガナ」が1対1にならないので、エラーになります。そのようなときは、社員IDのような一意の列を基準にするか、名前のほうに区別を付けます。
なお、ビジュアルの右上の「…」(その他のオプション)からの「軸の並べ替え」は、あくまでそのビジュアルだけの設定です。「列で並べ替え」はデータモデル側の設定なので、どのビジュアルで使っても同じ順番で並びます。並び順のルールが決まっている項目は、データモデル側で設定しておくのがおすすめです。