MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Power Apps で レコード型のデータからキーバリュー型のテーブルに変換する方法 (Tips)

久しぶりの 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" はすべてテキスト型に変換されています。ですので、元がネストしたレコードのようなケースには適用できない点に注意してください。

実際にパイチャートのカラーセットに適用すると下図のようになります。

ということで、レコード型からキーバリュー型のテーブルデータを生成する方法の紹介でした。