数式列を使用する
数式列は、Microsoft Dataverse テーブルで計算値を表示する列です。 数式では、強力でありながら人間に優しいプログラミング言語である Power Fxが使用されます。 数式を Dataverse 数式列で Microsoft Excel で作成するのと同じ方法で作成します。 入力すると、Intellisense は関数と構文を提案し、エラーの修正にも役立ちます。
数式列の追加
https://make.powerapps.com で Power Apps にサインインします。
テーブル を選択して、数式列を追加したいテーブルを選択します。 項目がサイド パネル ウィンドウに表示されない場合は、…さらに表示 を選択して、目的の項目を選択します。
選択 で 列 領域に移動し、選択 新しい列を選択します。
次の情報を入力してください。
- 列については、A 表示名 を参照してください。
- 必要に応じて、列の 説明 を入力します。
データ型 選択 fx 式の場合。
数式を入力するか、数式の候補を使用します。
Power Fx [数式] ボックスに 数式を入力します。 詳細情報: 数式を入力
- 選択 の追加プロパティ:
- 選択 検索可能 : この列をビュー、グラフ、ダッシュボード、および詳細検索で使用できるようにします。
- 詳細オプション:
- 数式が小数値に評価される場合は、 [詳細オプション] を展開して、精度のポイント数を0 ~ 10の間で変更します。 既定値は 2 です。
- 保存 を選びます。
式を入力
次の例では、 Total price という数式列を作成します。 ユニット数 列は整数データ型です。 価格 列は10進データ型です。
数式列には、 価格 に ユニット数を掛けた結果が表示されます。
入力したこの数式は列の種類を決定します。 列を作成後、列の種類を変更することはできません。 つまり、列タイプ が変更されない場合にのみ、列を作成した後に数式を変更できます。
たとえば、数式 価格 * 割引 は、数値の 選択 を作成します。 価格 * 割引 を 価格 * (割引 + 10%) に変更できます。これによって 列タイプ は変更されないためです。 ただし、 price * discount を Text(price * discount) に変更することはできません。列タイプ を文字列に変更する必要があるためです。
式の提案を取得 (プレビュー)
[このトピックはプレリリース ドキュメントであり、変更されることがあります。]
式に希望する機能を説明するだけで AI が結果を生成します。 数式の提案は自然言語入力を受け入れ、GPT ベースの AI モデルを使用して、Power Fx 式を解釈し提案します。
重要
これは米国リージョンでのみ利用できるプレビュー機能です。
プレビュー機能は運用環境での使用を想定しておらず、機能が制限されている可能性があります。 これらの機能を公式リリースの前に使用できるようにすることで、顧客が一足先にアクセスし、そこからフィードバックを得ることができます。
現在、単一のテーブルを参照する数式の提案がサポートされています。 関連テーブルで列を参照する数式の提案はサポートされていません。
前提条件
この機能を有効にするには、 数式列のAI提案 環境 設定を有効にする必要があります。 詳細情報: 数式列のAIによる提案
自然言語入力の例
アカウントごとの評価を表示する 顧客評価 列があるとします。
[数式の候補を取得] ボックスに、 評価列の評価が5以上の場合は「良好」と表示し、5未満の場合は「平均」と表示し、値が空白または0の場合は「不良」と表示するなどの自然言語で数式を入力し、矢印ボタン (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 進法
- String
- ブール値
- 選択肢
- 日時 (TZI)
- DateTime (ユーザー ローカル) (他のユーザー ローカル値の DateAdd と DateDiff 関数との比較に限定)
- DateTime (日付のみ) (その他の日付のみの値、DateAdd および DateDiff 関数との比較に限定)
- 通貨型
- 整数
関数
数式列で使用できるスカラー関数については、 数式リファレンス - Dataverse 数式列 を参照してください。
* Text および Value 関数は、小数点区切り記号を含まない整数に対してのみ機能します。 小数点記号はロケールによって異なります。 数式列はロケールの知識がなくても評価されるため、小数点記号を適切に解釈または生成する方法はありません。
* StartOfWeek 引数は、数式列の WeekNum 関数と Weekday 関数ではサポートされていません。
Function 例
プロパティ | 例 |
---|---|
日付値を取得します。 | DateAdd(UTCNow(),-1,TimeUnit.Years) |
ガイドラインと制限
このセクションでは、Dataverse の数式列に関するガイドラインと既知の制限事項について説明します。
通貨フィールドの使用法の検証
- 数式列では、この例のように、数式での関連テーブルの通貨列の使用はサポートされていません。
- 数式での通貨列と為替レートの直接使用は、現在サポートされていません。 通貨と為替レートの列の使用は、
Decimal
関数、Decimal(currency column)
またはDecimal(exchange rate)
などによって実現されます。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 に設定されています。
- 整数数式列の形式の更新はサポートされていません。
生成できないデータ型の数式列
- 通貨型