Power Appsでデータを扱っていると、「列の中にさらにテーブルが入っている」という階層構造のデータに出会うことがあります。

こういったデータをそのまま表示しようとすると、なかなか思うように扱えなくて困ってしまいますよね。
今回は、そんな階層データを平坦化する方法をご紹介します。
階層データってどんなデータ?
例えば、こんなデータがあったとします。

ClearCollect(
Departments,
{Dept: "IT", Employees: [{Name: "Alice", Salary: 5000}, {Name: "Bob", Salary: 6000}]},
{Dept: "HR", Employees: [{Name: "Charlie", Salary: 4500}, {Name: "Diana", Salary: 5500}]}
);
一見普通のテーブルに見えますが、よく見るとEmployees列の中身がテーブル型になっていて、階層化したコレクションになっているんですね。


実は、SharePointリストの場合、複数選択可能な選択肢列のデータなどがこのような構造になっています。一つのセルの中に複数の値が配列として格納されているイメージです。
今回はこの列を展開して、テーブル全体を平坦化して表示する方法を見ていきましょう。
Ungroup関数で階層を解消する
テーブル列を展開したい場合は、Ungroup関数を利用します。
この関数はちょっと特殊で、階層化されたテーブルを「ほどく」ような動作をしてくれます。使い方はこんな感じです。
Ungroup(テーブル,ほどきたいテーブル形式の列名)
Ungroup関数には、平坦化したいテーブルと展開したい列名を指定することで、階層化したテーブルを平坦化することが可能になります。
実際に平坦化してみよう
では、実際にやってみましょう。今回はemployees列を2つ目の引数に指定します。

Ungroup( Departments, Employees)
すると、どうでしょう。このようにテーブルがそれぞれ4行の計8行に増え、平坦化されたことが確認できますね。
元々はそれぞれのカテゴリで1行だったデータが、employees列に含まれていた複数の値がそれぞれ独立した行として展開されたわけです。
平坦化するとこんなに便利
階層データが展開されたことで、その列の値もギャラリー内で簡単に利用することが可能になります。

複雑なネストした構造を意識することなく、通常のテーブルと同じように扱えるようになるので、表示やフィルタリングがずっと楽になりますね。
まとめ
いかがでしたでしょうか。Ungroup関数を使えば、階層化されたテーブルデータを簡単に平坦化できるようになりました。
SharePointの複数選択肢列だけでなく様々な場面で活用できる便利な関数です。
階層データの扱いに困ったときは、ぜひこの方法を試してみてください。



コメント