Microsoft Power Apps Advent Calendar
この記事は、Microsoft Power Apps Advent Calendar 2023 20日目の記事です。
自己紹介
佐賀県の小売業で情シスをしています。
2023年に社内のDX事業の一つでPower Platformによる内製アプリ開発(Power Apps)とデータ分析(Power BI)が評価され、日本DX大賞を受賞することが出来ました。
内容
かなり前に外部依頼して作成したショッピングローン計算があったのですが、OSのサポート期限切れで利用出来なくなっており、このアプリだったらPower Appsにて作成出来るかなと思い作成した際に日付計算のところで迷ったので記事にしてみました。
かなり前に外部依頼で作成したアプリ(iosは Apple Storeから削除されている)
Power Appsにて今回作成したアプリ(アプリ名も一緒)
各種日付計算
終了月計算
ローンの終了月計算は、Power AppsのDateAdd関数で計算する。
DateAdd(
Loan_s_date,
Loan_number -1 ,
TimeUnit.Months
)
ボーナス加算月の回数計算
支払期間中に指定した月が何回あるかを判断するのにPower Appsの関数のみで計算可能か考えてはみたが、良い案が見当たらず迷ったところ、Power BIで使用する日付テーブルがあれば、Power Appsでも使えるのではないかと思い試してみました。
日付テーブルの作成方法
日付テーブルとは、時系列計算を行う際に利用するテーブルになります。
列名に会計年度・年・月・日や曜日等が入っており、時系列を計算する際に使用します。
データソースがMicrosoft Dataverseの場合
Power Appsでのデータフローにて、Power Query Onlineにて日付テーブルを作成後、Dataverseにインポートをする。
データソースがSharepoint Listの場合
ExcelのPower Queryにて日付テーブルを作成後、インポートする等があります。
Filter関数でボーナス月の回数を取得
Power Appsのfilter関数にて、日付テーブルから開始日から終了日で日付が1日のデータをMonth_loandateに保存する。
///日付テーブルから月単位のテーブルを作成
ClearCollect(
Month_loandate,
Filter(
Date_tbl,
Calender_date >= Loan_s_date,
Calender_date <= Loan_e_date,
Date_day = 1
)
)
ボーナス支払回数を計算
日付テーブルを元に作成したMonth_loandate内にあるDate_monthがボーナス支払月と一致する件数をCountRowsで取得しボーナスの支払回数を計算します。
///ボーナス支払月(夏)の支払回数
CountRows(
Filter(
Month_loandate,
Date_month = Bounus_summer
)
)
各支払金額を計算
ボーナス支払額(夏、冬)、月々支払額(100円未満切捨)、初回支払額の計算を行い表示
月々のローン支払シミュレーションを作成
外部に依頼したアプリでは月々のローンシミュレーション機能が予算の関係で出来なかったが、Power Appsなら出来るかなと思い挑戦してみる。
日付テーブルやForAll関数を駆使しながら何とか作成
まとめ
日付計算についてPower Appsの関数のみに頼るのではなく日付テーブルを作成後、Filter関数を使うことにより、容易に日付計算を行うこともあります。
日付は変わることはないのであらかじめ日付テーブルを作っていれば、日付計算が楽になるかもしれません。