数式列を使用する
数式列は、Microsoft Dataverse テーブルで計算値を表示する列です。 数式は Power Fx、強力でありながら人間に優しいプログラミング言語を使用します。 数式を Dataverse 数式列で Microsoft Excel で作成するのと同じ方法で作成します。 入力すると、Intellisense は関数と構文を提案し、エラーの修正にも役立ちます。
数式列の追加
https://make.powerapps.com で Power Apps にサインインします。
テーブル を選択して、数式列を追加したいテーブルを選択します。 項目が左側のナビゲーション ウィンドウに表示されない場合は、…さらに表示 を選択して、目的の項目を選択します。
列 エリアを選択し、新規列 を選択します。
次の情報を入力してください。
- 列の表示名。
- または、列の 説明 を入力します。
データ型 で fx 式を選択します。
数式を入力するか、数式の候補を使用します。
数式 ボックスに Power Fx 数式を入力します。 詳細情報: 式を入力する
- 追加プロパティを選択します。
- 列をビュー、ダッシュボードおよび高度な詳細で利用したい場合は、検索可能を選択します。
- 詳細オプション:
- 数式が 10 進数値に評価される場合は、詳細オプション を展開して、精度のポイント数を 0~10 の間で変更します。 既定値は 2 です。
- 保存 を選択します。
式を入力
次の例では、合計金額 という数式列を作成します。 ユニット数 列は整数データ型です。 価格 列は 10 進データ型です。
数式列には、価格 に ユニット数 をかけた結果が表示されます。
入力したこの数式は列の種類を決定します。 列を作成後、列の種類を変更することはできません。 つまり、列タイプが変更されない場合にのみ、列を作成した後で数式を変更できます。
たとえば、数式 price * discount は数値の列タイプを作成します。 列タイプは変更されないため、price * discount を price * (discount + 10%) に変更することができます。 ただし、列タイプを文字列に変更する必要があるため、price * discount を Text(price * discount) に変更することはできません。
式の提案を取得 (プレビュー)
[このトピックはプレリリース ドキュメントであり、変更されることがあります。]
式に希望する機能を説明するだけで AI が結果を生成します。 数式の提案は、自然言語入力を受け入れて、GPT ベースの AI モデルを使用して Power Fx 数式を解釈し、提案します。
重要
これは米国リージョンでのみ利用できるプレビュー機能です。
プレビュー機能は運用環境での使用を想定しておらず、機能が制限されている可能性があります。 これらの機能を公式リリースの前に使用できるようにすることで、顧客が一足先にアクセスし、そこからフィードバックを得ることができます。
現在、単一のテーブルを参照する数式の提案がサポートされています。 関連テーブルで列を参照する数式の提案はサポートされていません。
自然言語入力の例
アカウントごとの評価を示す 顧客評価 列があると想像してください。
数式の提案を取得する ボックスに、[評価] 列の評価が 5 以上の場合は Good、値が空白またはゼロの場合は Bad と表示されますのような自然言語で数式を入力して、矢印ボタン (Enter) を選択します。
次に、推奨される数式をコピーします。
それを 数式を入力 ボックスに貼り付けます。 保存 を選択します。
数式を貼り付けると、次のように表示されます。
Switch(
ThisRecord.'Customer Rating',
Blank(), "Bad",
0, "Bad",
1, "Average",
2, "Average",
3, "Average",
4, "Average",
5, "Good",
6, "Good",
7, "Good",
8, "Good",
9, "Good",
10, "Good"
)
計算された 評価の説明 式列を確認します。次のように表示されます。
責任ある AI
責任ある AI について詳しくは、次のリソースを参照してください。
Operators
数式列では、次の演算子を使用できます。
+、-、*、/、%、in、exactin、&
詳細については Power Apps の演算子 を参照してください。
Data types
数式列でが次のデータ型を表示できます。
- Text
- 10 進数
- 選択肢 はい/いいえ (ブール値)
- Datetime
通貨、整数、選択肢 (以前のオプション セット) のデータ型は現在サポートされていません。
関数型
数式列では次の関数型を使用できます。
- 10 進法
- 文字列
- ブール値
- オプション セット
- DateTime (TZI)
- DateTime (ユーザー ローカル) (他のユーザー ローカル値の DateAdd と DateDiff 関数との比較に限定)
- DateTime (日付のみ) (その他の日付のみの値、DateAdd および DateDiff 関数との比較に限定)
- 通貨型
- 整数、10 進数に昇格
関数
数式列では次のスカラー関数を使用できます。
Value *
Text *
Decimal *
* Text と Value の関数は整数でのみ機能し、小数点記号は含まれません。 小数点記号はロケールによって異なります。 数式列はロケールの知識がなくても評価されるため、小数点記号を適切に解釈または生成する方法はありません。
Function 例
Description | 例 |
---|---|
日付値を取得します。 | DateAdd(UTCNow(),-1,TimeUnit.Years) |
ガイドラインと制限
このセクションでは、Dataverse の数式列に関するガイドラインと既知の制限事項について説明します。
通貨フィールドの使用法の検証
- 数式列では、この例のように、数式での関連テーブルの通貨列の使用はサポートされていません。
- 数式での通貨列と為替レートの直接使用は、現在サポートされていません。 通貨および為替レートの列の使用は、
Decimal(currency column)
やDecimal(exchange rate)
などのDecimal
関数によって実現されます。Decimal
関数は、出力が許容範囲内にあることを確認します。 通貨または為替レートの列の値が許容範囲を超える場合、数式は null を返します。 - 基本通貨列はレポート目的で使用されるシステム列であるため、数式列の式ではサポートされません。 同様の結果が必要な場合は、通貨列タイプと為替レート列の組み合わせを
CurrencyField_Base = (CurrencyField / ExchangeRate)
として使用できます。
日付時刻列の使用法の検証
- 日付時刻の数式列の動作は、別の数式列で使用されていない場合にのみ更新できます。
- 日付時刻の数式列の場合、
DateDiff
関数を使用する際は、次のことを確認してください:- ユーザー ローカル動作列は、
DateTime(TZI)/DateOnly
動作列と比較または使用することはできません。 - ユーザー ローカル動作列は、別のユーザー ローカル動作列とのみ比較または使用できます。
DateTime(TZI)
動作列は、DateDiff
関数で別のDateTime(TZI)/DateOnly
動作列と比較または使用することができます。DateOnly
動作列は、DateDiff 関数で別のDateTime(TZI)/DateOnly
動作列と比較または使用することができます。
- ユーザー ローカル動作列は、
ロールアップ フィールドでの数式列の使用
- 単純な数式列 では、数式が同じレコードの列を使用するか、ハードコードされた値を使用します。 ロールアップ列の場合、数式列は、このロールアップ列の例のように、単純な数式列である必要があります。
Power Fx text 関数のレコメンデーション
数式列は、数値型の単一引数を持つ
Text()
関数をサポートしません。 数値には、整数、小数、または通貨を指定できます。数式列では、次の構成での数値の使用はサポートされていません:
- 文字列関数の場合。 これらは、文字列関数でテキスト引数が想定される場所に配置されます: Upper、Lower、Left、Right、Concatenate、Mid、Len、StartsWith、EndsWith、TrimEnds、Trim、Substitute、Replace。
- 暗黙的な数式 (
12 & "foo"
、あるいは12 & 34
、あるいは"foo" & 12
など) の場合。 - 内部番号からテキストへの変換はサポートされていません。 数値をテキストに変換するには
Text(Number, Format)
を使用することをお勧めします。String
引数がText
関数で渡される場合、Format
引数はサポートされません。 - 以下は、
Text
関数を使用して数値をテキストに変換し、文字列を追加する例です:
Concatenate(Text(123,"#"),"ab") Text(123,"#") & "foo"
数式列の範囲検証
- 数式列の 最小値 または 最大値 のプロパティは設定できません。
- すべての内部計算は、小数型の数式列の Dataverse 範囲 (-100000000000 から 100000000000) 内に収まる必要があります。
- 数式バーに入力するハードコードされたリテラル値は、Dataverse の範囲内にある必要があります。
- null の数値列がある場合、中間操作では 0 とみなされます。 たとえば、
a+b+c and If a = null, b=2, c=3
では、数式列は0 + 2 + 3 = 5
になります。- この場合、計算列には
null + 2 + 3 = null
になるため、この動作は計算列とは異なります。
- この場合、計算列には
数式列の全般検証
- 数式列は他の数式列を参照できますが、数式列自体を参照することはできません。
- 数式列は、
F1 = F2 + 10, F2 = F1 * 2
などのサイクリック チェーンをサポートしていません。 - 数式列の数式の最大長は 1000 文字です。
- 数式列で許可される最大の深さは 10 です。 深さ は、他の数式列またはロールアップ列を参照する数式列のチェーンとして定義されます。
- たとえば、
table E1, F1 = 1*2, table E2, F2 - E1*2
などとします。 この例で F2 の深さは 1 です。
- たとえば、
- アプリがモバイル オフライン モードの場合、数式列には値が表示されません。
- 計算列を数式列で使用したり、その逆を使用したりすることはお勧めしません。
- 重複データ検出ルールは数式列でトリガーされません。
Now
関数は数式列で使用できます。Now()
にはユーザー ローカル動作があり、UTCNow()
にはタイムゾーンに依存しない動作があります。- 小数列の精度プロパティを設定できます。
Power Fx 関数は現在サポートされていません
- 電源
- Sqrt
- Exp
- Ln
- ^ (演算子)
生成できないデータ型の数式列
- 整数
- 選択肢 (はい/いいえの選択肢を除く)
- 通貨型
参照
フィードバック
フィードバックの送信と表示