Power Appsカスタム関数コンポーネント関数

【Power Apps】,区切り複数行テキスト列から重複排除するカスタム関数の作り方

Power Apps

少々ニッチですが、以下のような,区切り文字列が格納されている複数行テキスト列を重複排除して出力するカスタム関数の作り方を紹介します。

コンポーネント・カスタム関数全般の使い方はこちら

作り方

コンポーネントを作成

コンポーネントを作成し、適当(いいかげんじゃないよ)な名前をつけます。

データ以外はプレビュー機能であるため、何も設定していない状態では入力または出力しか選択することができません。

設定から拡張コンポーネントのプロパティをオンにすることで、全てのプロパティの型を表示させることができます。

カスタムプロパティの作成

CommaSeparatedDistinctと命名しました(センスがない)

,区切りで重複削除されたテキストを出力するカスタムプロパティを作成します。

その後、新しいパラメーターを選択します。

重複削除対象の列を入力パラメーターとし、CommaSeparatedColumnと命名します。

その後、忘れずに作成をクリックします。

Tips:カスタム関数のみ使用するコンポーネントは幅と高さを1に設定しましょう

0にすると画面で600に戻ってしまうので、1に設定するのがおすすめです。

プロパティの変更

作成したCommaSeparatedDistinctを選択し、まずはそのパラメーターであるCommaSeparatedColumnを編集します。

Table({Value: ""})

ここで入力のスキーマを定義します。この形式のテーブル以外ではエラーになるので、関数への入力時に列名変換を行う必要があります。(後述)

そして変換を行うCommaSeparatedDistinct関数には以下のように入力します。

Concat(Filter(Distinct(Split(Concat(CommaSeparatedColumn, Value & ","), ","), Value), !IsBlank(Value)), Value & ",")

この数式では以下の順番で処理しています。

  1. 対象の列のすべての行をConcat関数で,区切りの文字列化
  2. Split関数で,をキーに再度テーブル化
  3. Distinct関数で重複削除
  4. Filter関数で空白の行を削除
  5. Concat関数で,区切りの文字列化

画面での使い方

以下の「列」という名前,区切り複数行テキスト列を重複削除の対象とします。

Items = Col

アプリ内のコンポーネントで作成した場合は、挿入→カスタムより、作成したコンポーネントを選択します。

画面にコンポーネントを追加したら、ラベルを追加してそのTextプロパティに以下の通り入力します。

ComponentFomulas_1.CommaSeparatedDistinct(
    RenameColumns(Col, "列", "Value")
)

列名を変換するひと手間は必要ですが、短い数式で重複削除が可能になりました。

コメント

タイトルとURLをコピーしました