久しぶりの Power Apps のTipsです。
今回のTipsを考えたきっかけは、Power Appsのチャートコントロールに設定されている色を、アプリのテーマカラーに合わせられないかなと考えたことでした。下図右側のバーチャートがアプリのテーマを適用したものです。
チャートコントロールの色というのは、 ItemColorSet
というプロパティで指定しますが、テーブル型のデータを指定しなければいけません。
一方、アプリのカラーテーマは App.Theme.Colors
で取得できますが、これはレコード型になっています。試しに変数に入れてみると以下のようにDark10, Dark20, Dark30...などの列に色の値が入っているレコードです。
つまり、このアプリのカラーテーマをチャートコントロールに適用するためには レコード型からテーブル型にうまく変換する必要があるということです。
今回はこの方法を紹介します。
レコード型からキーバリュー型のテーブルに
のちに紹介するPower Appsの数式は比較的汎用性のあるように定義しますが、ここではサンプルとして以下のような変換を考えます。
変換後のテーブルの"key"という列に、もとのレコードのプロパティ名(列名)が入り、対応する値が "value" という列に入るようなものです。
もとになるレコード型のデータが RecordData
という変数に入っているとすると、以下の式で適切なキーバリューのテーブルが生成されます。
AddColumns( RenameColumns( ColumnNames(ParseJSON(JSON(RecordData))), "Value", "key" ), "value", Text( Column( ParseJSON(JSON(RecordData)), key ) ) )
ただしこの際、"value" はすべてテキスト型に変換されています。ですので、元がネストしたレコードのようなケースには適用できない点に注意してください。
実際にパイチャートのカラーセットに適用すると下図のようになります。
ということで、レコード型からキーバリュー型のテーブルデータを生成する方法の紹介でした。