Power Fx 数式を使用して、アプリ内の SQL Server のデータに接続する方法はさまざまです。 データに直接アクセスしたり、ビューまたはストアド プロシージャを使用してアプリ内のデータを作成、更新、または削除したりできます。
前提条件
データに直接アクセスするには、SQL Server データ用の データで開始する アプリを作成できます。 この方法を使用すると、ビューやストアド プロシージャを使用して変更できる基本的な動作するアプリを取得できます。
Power Apps サインインして、アプリ ページに移動します。
新しいアプリ>データで開始するを選択します。
データから開始 ページから、外部データの接続を選択します。
データ セットを選択して開始します の下で、SQL からを選択します。
既存のSQLサーバー接続がある場合は、それが読み込まれます。
ヒント
SQL Server 接続が接続がない場合は、作成するようプロンプトが表示されます。
SQL の接続を選択します。
サーバー 名と データベース名を入力し、 接続 を選択します。 表示されるテーブルのリストからテーブルを選択します。
ヒント
一度に 1 つの接続だけ表示されます。 別の接続を使用するには、SQL接続の ... オーバーフロー メニューを 選択 し、新しい接続を見つけるか、新しいSQL接続を作成します。
アプリを作成するを選択します。
データへのアクセス
アプリがSQLサーバーに接続されると、データにアクセスできるようになります: SQLサーバーのデータにアクセス。
結果の表示
SQLクエリの結果を表示するには、 「SQLサーバーで結果を表示する」 を参照してください。
Power Apps データ型のマッピング
| SQL Server | Power Apps |
|---|---|
bigint、decimal、int、money、numeric、smallint、smallmoney、tinyint、float、real |
Number |
char、 nchar、 varchar、 nvarchar、 text、 ntext |
テキスト |
bit |
ブール値 |
date、 datetime、 datetime2、 smalldatetime、 datetimeoffset、 time |
DateTime |
uniqueidentifier |
Guid |
ヒント
SQL Server データ型が前の表に表示されない場合、そのデータ型はサポートされていません。
サポートされていないデータ型には、 binary()、 varbinary()、 image、 cursor、 rowversion、 hierarchyid、 sql_variant xml、空間ジオメトリの種類、空間地理の種類、テーブルの例が含まれます。 また、"tinyint" と "smallint" は主キーとしてサポートされていません。
SQL Server に委任可能な Power Apps の機能と操作
Power Apps では、処理のために Power Fx クエリ操作 (フィルターなど) をバックエンド データ ソースに委任できます。 委任を使用すると、バックエンド データ サービス (SQL Server など) がフィルター処理を実行して、デバイスに転送する必要があるレコードが少数になるようにすることができます。
次の表は、データ型別に SQL Server に委任できる操作を示しています。
And、Or、およびNotで結合された式は委任可能です。
| 操作または関数 | Number | テキスト | ブール値 | DateTime | Guid |
|---|---|---|---|---|---|
*, +, -, / |
イエス | - | - | いいえ | - |
<、 <=、 >、 >= |
イエス | いいえ | いいえ | イエス | - |
=、<> |
イエス | イエス | イエス | イエス | イエス |
Average |
イエス | - | - | - | - |
EndsWith |
- | はい [1] | - | - | - |
Filter |
イエス | イエス | イエス | はい [2] | イエス |
In (部分文字列) |
- | はい [3] | - | - | - |
IsBlank [4] |
いいえ | いいえ | いいえ | いいえ | いいえ |
Len (長さ) |
- | はい [5] | - | - | - |
Lookup |
イエス | イエス | イエス | イエス | イエス |
Max |
イエス | - | - | いいえ | - |
Min |
イエス | - | - | いいえ | - |
Search |
いいえ | イエス | いいえ | いいえ | - |
Sort |
イエス | イエス | イエス | イエス | - |
SortByColumns |
イエス | イエス | イエス | イエス | - |
StartsWith |
- | はい [6] | - | - | - |
Sum |
イエス | - | - | - | - |
UpdateIf, RemoveIf [7] |
イエス | イエス | イエス | イエス | イエス |
注記
(EndsWith(\<column>, "string value"))ではサポートされますが、(EndsWith("string value", \<column>))ではサポートされません。 char(10) 列の値が "hello" の場合、EndsWith(\<column>, "llo")は false を返します。 char(10) 列の文字数は 10 文字です。オンプレミスのデータ ゲートウェイを使用する SQL Server では、直接の日付フィルターは機能しません。 ただし、機能する計算列を作成できます。 たとえば、次を作成できます。
ALTER TABLE myTable ADD DateAsInt AS (YEAR([date]) * 10000 + MONTH([date]) * 100 + DAY([date]))
計算された数値列をフィルター処理します。("string value" in \<column>)ではサポートされますが、(\<column> in "string value")ではサポートされません。Filter('[dbo].[MyOrders]', !IsBlank(CustomerId))などの式はサーバーに委任されません。 ただし、サーバーにデリゲートし、意味的に近いFilter('[dbo].[MyOrders]', CustomerId <> Blank())などの式を使用できます。 違いは、2 番目の式では空の文字列 ("") は空として扱われないということです。 式は同等ではありませんが、後者は目的に合わせて機能する場合があります。 Guid データ型にはこのメソッドを使用できません。Power Apps は
Len関数を委任しますが、動作が期待どおりに機能しない可能性があります。 SQL Server では、値 "hello" の char(10) 列の長さは常に 10 です。 ただし、Power Apps では、その文字列の長さが 5 であると見なされ、不一致や混乱が発生する可能性があります。 SQL Server ではchar/ncharを使用せず、代わりにvarchar/nvarcharを使用してください。(StartsWith(\<column>, "string value"))ではサポートされますが、サポート対象ではありません(StartsWith("string value", \<column>))UpdateIf と RemoveIf はローカルで動作しますが、委任は 500/2000 レコードの制限までシミュレートします。 非委任 500/2000 レコード制限を超えてレコードが連続してダウンします。 If 条件を満たすレコードが収集されます。 通常、最大 500/2000 レコードが個別に収集され、実行ごとに変更されます。 ただし、関数が評価のためにさらに多くのレコードにアクセスできるため、既存のローカル データ キャッシュが大きい場合は、より多くのレコードが更新される可能性があります。