数式列を使用する
数式列は、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 式を解釈し提案します。
重要
これは米国リージョンでのみ利用できるプレビュー機能です。
プレビュー機能は運用環境での使用を想定しておらず、機能が制限されている可能性があります。 これらの機能を公式リリースの前に使用できるようにすることで、顧客が一足先にアクセスし、そこからフィードバックを得ることができます。
現在、単一のテーブルを参照する数式の提案がサポートされています。 関連テーブルで列を参照する数式の提案はサポートされていません。
前提条件
この機能を有効にするには、数式列の AI による提案 環境設定を有効にする必要があります。 詳細情報: 式の列の AI による提案
自然言語入力の例
アカウントごとの評価を示す 顧客評価 列があると想像してください。
数式の提案を取得する ボックスに、[評価] 列の評価が 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
数式列でが次のデータ型を表示できます。
通貨および選択肢 (以前のオプション セット) のデータ型は現在サポートされていません。
関数型
数式列では次の関数型を使用できます。
- 10 進法
- 文字列
- ブール値
- オプション セット
- DateTime (TZI)
- DateTime (ユーザー ローカル) (他のユーザー ローカル値の DateAdd と DateDiff 関数との比較に限定)
- DateTime (日付のみ) (その他の日付のみの値、DateAdd および DateDiff 関数との比較に限定)
- 通貨型
- 整数、10 進数に昇格
関数
数式列では次のスカラー関数を使用できます。
Value *
Text *
Decimal *
* Text と Value の関数は整数でのみ機能し、小数点記号は含まれません。 小数点記号はロケールによって異なります。 数式列はロケールの知識がなくても評価されるため、小数点記号を適切に解釈または生成する方法はありません。
* StartOfWeek 引数は、数式列の WeekNum 関数と Weekday 関数ではサポートされていません。
Function 例
プロパティ | 例 |
---|---|
日付値を取得します。 | DateAdd(UTCNow(),-1,TimeUnit.Years) |
小数式列を作成する
小数を返す数式列を作成します。
- 列を作成するときは、次の情報を入力します。
- 列の表示名。
- または、列の 説明 を入力します。
- データ型 で fx 式を選択します。
- 数式 バーに数値を返す数式を入力します。 この例では、 Total Amountという数式列を作成します。 出荷単位ごとの価格 列は10進データ型です。
- 詳細オプション を展開し、 数式データ型 として 選択 小数 を選択し、必要な小数点以下の桁数を設定します。
- 保存 を選択します。
整数の式列を作成する
整数を返す数式列を作成します。
- 列を作成するときは、次の情報を入力します。
- 列の表示名。
- または、列の 説明 を入力します。
- データ型 で fx 式を選択します。
- 数式 バーに数値を返す数式を入力します。 この例では、 Number of Units という数式列を作成します。 合計価格 および 出荷単位ごとの価格 列は小数データ型です。
- 詳細オプション を展開し、 数式データ型 として選択 整数 を選択し、整数列に必要な形式を設定します。
- 保存 を選択します。
ガイドラインと制限
このセクションでは、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
動作列と比較または使用することができます。
- ユーザー ローカル動作列は、
- 日付と時刻列と日付と時刻関数
UTCNow()
、Now()
は、文字列関数にパラメータとして渡すことはできません。
ロールアップ フィールドでの数式列の使用
- 単純な数式列 では、数式が同じレコードの列を使用するか、ハードコードされた値を使用します。 ロールアップ列の場合、数式列は、このロールアップ列の例のように、単純な数式列である必要があります。
- 時間拘束関数
UTCNow()
およびUTCToday()
に依存する数式列は、ロールアップ フィールドで使用できません。
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 です。
- たとえば、
- モデル駆動型アプリでは、ソートは無効化されます:
- 関連テーブルの列を含む数式列。
- 論理列 (たとえば住所列) を含む数式列。
- 別の計算列または数式列を含む数式列。
- 時限関数
UTCNow()
を使用する数式列。
- 数式列では、言語、期間、タイムゾーンの形式を持つ整数型の列はサポートされていません。
- メール、テキスト領域、株式銘柄コード、URL の形式の文字列型の列は、数式列ではサポートされていません。
- アプリがモバイル オフライン モードの場合、数式列には値が表示されません。
- 数式列でワークフローやプラグインをトリガーすることはできません。
- 計算列を数式列で使用したり、その逆を使用したりすることはお勧めしません。
- 重複データ検出ルールは数式列でトリガーされません。
Now
関数は数式列で使用できます。Now()
にはユーザー ローカル動作があり、UTCNow()
にはタイムゾーンに依存しない動作があります。- 小数列の精度プロパティを設定できます。
- 数値を返す数式の場合、デフォルトの数式データ型の値は Decimal に設定されています。
- 整数数式列の形式の更新はサポートされていません。
Power Fx 関数は現在サポートされていません
- 電源
- Sqrt
- Exp
- Ln
- ^ (演算子)
生成できないデータ型の数式列
- 選択肢 (はい/いいえの選択肢を除く)
- 通貨型