Power Appsから直接ストアドプロシージャを実行する方法

Power Appsから直接ストアドプロシージャを実行する方法

2023年リリースサイクル2でPower Appsから直接ストアドプロシージャを実行できるようになりました。

早速触ってみたので、設定方法やPower Automateとの実行時間の比較を紹介します。

設定方法

SQL Serverにストアロプロシージャを作成する

当然ですが、ストアドプロシージャを作成する必要があります。

今回利用したテーブルはこちらです。

Pythonで100万行のCSVを作り、それをインポートしました。

そして今回作成したストアロプロシージャはこちら

SQL
CREATE PROCEDURE [dbo].[SearchBirthdayBetween] @start_date DATE, @end_date DATE
AS
BEGIN SET NOCOUNT ON; SELECT * FROM mockdata WHERE birthday BETWEEN @start_date AND @end_date;
END;

日付を2つ受け取り、その期間内の誕生日のデータのみ取得するクエリです。

Power Appsからストアドを実行する

左のメニューの「データ」から「SQL Server」を選択し、SQL Serverのテーブルとの接続を作成する際と同じように接続を作成します。

右側でテーブルを選択する画面が表示されますが、「ストアロプロシージャ」タブを選択すると、作成したストアロプロシージャが選択できます。

選択し、「接続」を選択することで、「データ」にストアロプロシージャを追加できます。

補足

追加すると末尾に「_1」などのように、自動で番号などが振られた名前になります。実際にはストアド単位で「データ」に追加されていきますので、複数のストアドを利用する場合には、名前を変更して使うことをおすすめします。

「ギャラリーやテーブルに安全に使用できますか?」のチェックボックスはよくわかりませんでした。

詳しくわかる方、コメントいただけると嬉しいです。

基本的な構文はこちら

Power Apps
'データの名前'.ストアドの名前(
{
引数1:引数1の内容,
引数2:引数2の内容
})

左のメニューの「データ」の名前、その後ろにはストアドの名前を入力し、その引数を入力します。

※引数がなければ省略可です。

今回は取得したデータをギャラリーに表示させることにしました。

実際にはボタンのOnSelectに下記のように設定しています。

Power Apps
UpdateContext( { sqlst11: '20240909database'.dboSearchBirthdayBetween( { start_date: Text( DatePicker1.SelectedDate, "yyyy/mm/dd", "ja-JP" ), end_date: Text( DatePicker1_1.SelectedDate, "yyyy/mm/dd", "ja-JP" ) } ) }
);

データを表示するギャラリーの「Items」には下記の様に設定します。

Power Apps
sqlst11.ResultSets.Table1

あとはボタンなどから実行することでデータを取得できます。

Power Automateと処理速度比較

これまでSQL SERVERのストアドプロシージャを実行するには、Power Automateを経由しての実行でした。今回Power Appsでも可能になりましたので、実行時間を計測してみました。

正しい処理速度の計測方法が分からず、ブラウザのデベロッパーツールの機能で計測しました。

取得件数Power AppsPower Automate
1125515ms817ms
41268921ms4.11s
811391.48s12.69s
2807574.17s25.48s

計測する度に数値が異なるので、あくまで目安としての値になります。ただし、Power AutomateよりPower Appsが早い点は変わりがありませんでした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA