先日 Power BIで、階層タイプのスライサービジュアルで表示順を制御する機会がありました。その際、調査・解決に苦労した部分を解説していきたいと思います。
階層タイプのスライサービジュアルで表示順を制御したい
作成したものの1つに階層設定のスライサーを使ってツリー状に会社組織の一覧表示するものがありました。
ビジュアルのスライサーは、テーブルから指定した列をリスト状、タイル状、ツリー状に整理して表示するものです。
スライサーの表示形式を階層方式にした場合、対象としているテーブル列がツリー形式で表示されます。(以下階層スライサーとします)
今回は、下記のような組織テーブルと階層スライサーを例に解説していきます。
会社 | 支社 | 部 | 課 | メンバー |
---|---|---|---|---|
Hoge株式会社 | 本社 | 開発企画 | 1G | 山田太郎 |
階層スライサーの表示順は?
階層スライサーは選択した階層の列名順に表示されます。
この例だと[会社][支社][部][課][メンバー]の順に指定しています。
組織の規模によっては、支社や部署が多く、デザインを画面を縦目一杯に設定してもスクロールで見切れてしまう事があります。また、アルファベット・漢字・かな等が入り混じるため、単純にソートされてしまうと使い勝手が悪い、という事もあるようです。
※ この例では 4つしか会社を表示していませんが、例えば関連会社が100以上ある、といったケースではスクロールで見切れている状態が発生します
このような状況の改善を試みました。
スライサーの表示順を変更したい
要望を紐解いてみると、単純にソートをしたいのではなく、会社別に表示順を定めたテーブル(列)を作り任意に並べ替えたいとのことでした。
階層スライサーではツリー状にデータが自動でまとまるため、データソースのソートなどではうまく変更できません。
階層状にまとまる際に自動でソートされているようです。
ビジュアルの右上にある「その他のオプション」から表示順も変更できます。
第2階層以下を指定してソートした場合は、その階層内でソートできます。
今回は、このような表示順テーブルを用意しました。
会社 | 順位 |
---|---|
Hoge株式会社 | 2 |
C会社 | 1 |
Aコーポレーション | 3 |
D会社 | 4 |
スライサーにこの[順位]を直接指定した場合、ツリーに組み込まれて表示されてしまいます。
会社名の前に表示順のテキスト値をくっつけてしまえば簡単ですが、会社名が変わってしまうことで使いづらくなるうえ、スマートフォンなど縦画面で表示した際にも都合が悪く、これも没にしました。
調査を進めてMicrosoft Learnなどを読み漁り、色々と情報を紐解いたところ、ようやく手がかりが見えてきました。
想像していたよりも手間がかかる
組織テーブルと表示順テーブルを[会社]でリレーションし単純にスライサーに設定しようとしてもうまくいきません。
- [順位]列をビジュアルに設定してしまうと表示されてしまうので使いたくない。
- スライサーに指定した列でのソート機能はあるが列指定したものしか対象にできない。
- 元のデータのソート順は、階層スライサー生成時にグルーピングされるためほぼ無効。
つまり表示に使用していない列でビジュアルをソートさせたいということです。
解決へ
【参考資料】
このリンク先記事を参考に「列ツール」の「列で並べ替え」を機能を使います。
この機能はリレーション先までは対応していないようなので使用には工夫が必要です。
先ずリレーションに指定した列と[順位]列が同一テーブルになるよう、テーブルを先に結合しておきます。
リレーションには必要に応じて結合テーブルの列の方を指定し直します。
次にスライサービジュアル選択状態でデータの中から、被ソート対象にする列を選択します。
そうすると、列ツールに「列で並べ替え」が表示されます。
ここでソート対象に[順位]を指定するとビジュアルのソート順が変更され、[順位]の順に[会社]がソートされます。
なお「列で並べ替え」ですが、ビジュアルに指定しているデータと同じテーブルの列しか選択肢に出てこないようです。
これで対応できました。
さいごに
Power BIの調査を進めていて感じたのが、一般的なプログラム言語であれば少し検索するだけで山ほど情報がヒットするようなことが、ローコード開発に置いては、「やりたいこと」を実現するためのサンプルが意外と少ないと感じました。
アプリで実現可能なこととその組み合わせのナレッジを積み上げることが、ビジネスに繋がっていくと感じました。
とはいえ、新コントロールの追加や各々のバージョンアップなどで出来ることが急速に変化していくため、情報をアップデートしながら追っていきたいと思います。
小林 千洋(日本ビジネスシステムズ株式会社)
JBS PS1部4G 小林千洋。古くは8086のアセンブラ、Cで「自作の競馬予想シミュレーター(とシステム)作りました」という触れ込みで就職活動をしたところ、何故かCOBOLの開発現場にて経験を積む。Webデザインや構築を大量に作る案件を経て、近年はAzureやPower Platformの開発に従事しているプログラマー寄りのSE。
担当記事一覧