数式列を使用する

数式列は、Microsoft Dataverse テーブルで計算値を表示する列です。 数式は Power Fx、強力でありながら人間に優しいプログラミング言語を使用します。 数式を Dataverse 数式列で Microsoft Excel で作成するのと同じ方法で作成します。 入力すると、Intellisense は関数と構文を提案し、エラーの修正にも役立ちます。

数式列の追加

  1. https://make.powerapps.com で Power Apps にサインインします。

  2. テーブル を選択して、数式列を追加したいテーブルを選択します。 項目がサイド パネル ウィンドウに表示されない場合は、…さらに表示 を選択して、目的の項目を選択します。

  3. エリアを選択し、新規列 を選択します。

  4. 次の情報を入力してください。

    • 列の表示名
    • または、列の 説明 を入力します。
  5. データ型fxを選択します。

  6. 数式を入力するか、数式の候補を使用します。

    数式 ボックスに Power Fx 数式を入力します。 詳細情報: 式を入力する


  1. 追加プロパティを選択します。
    • 列をビュー、ダッシュボードおよび高度な詳細で利用したい場合は、検索可能を選択します。
    • 詳細オプション:
      • 数式が 10 進数値に評価される場合は、詳細オプション を展開して、精度のポイント数を 0~10 の間で変更します。 既定値は 2 です。
  2. 保存 を選択します。

式を入力

次の例では、合計金額 という数式列を作成します。 ユニット数 列は整数データ型です。 価格 列は 10 進データ型です。

数式列定義のスクリーンショット。

数式列には、価格ユニット数 をかけた結果が表示されます。

数式列のあるレコードのスクリーンショット。

入力したこの数式は列の種類を決定します。 列を作成後、列の種類を変更することはできません。 つまり、列タイプが変更されない場合にのみ、列を作成した後で数式を変更できます。

たとえば、数式 price * discount は数値の列タイプを作成します。 列タイプは変更されないため、price * discountprice * (discount + 10%) に変更することができます。 ただし、列タイプを文字列に変更する必要があるため、price * discountText(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

数式列でが次のデータ型を表示できます。

  • Text
  • 10 進数
  • 選択肢 はい/いいえ (ブール値)
  • Datetime

通貨、整数、選択肢 (以前のオプション セット) のデータ型は現在サポートされていません。

関数型

数式列では次の関数型を使用できます。

  • 10 進法
  • 文字列
  • ブール値
  • オプション セット
  • DateTime (TZI)
  • DateTime (ユーザー ローカル) (他のユーザー ローカル値の DateAdd と DateDiff 関数との比較に限定)
  • DateTime (日付のみ) (その他の日付のみの値、DateAdd および DateDiff 関数との比較に限定)
  • 通貨型
  • 整数、10 進数に昇格

関数

数式列では次のスカラー関数を使用できます。

Abs

And

Day

Value *

If

Int

Len

Max

Mid

Min

Mod

Not

OR

Sum

Text *

* TextValue の関数は整数でのみ機能し、小数点記号は含まれません。 小数点記号はロケールによって異なります。 数式列はロケールの知識がなくても評価されるため、小数点記号を適切に解釈または生成する方法はありません。

Function 例

説明
日付値を取得します。 DateAdd(UTCNow(),-1,TimeUnit.Years)

ガイドラインと制限

このセクションでは、Dataverse の数式列に関するガイドラインと既知の制限事項について説明します。

通貨フィールドの使用法の検証

  • 数式列では、この例のように、数式での関連テーブルの通貨列の使用はサポートされていません。 Account.Annual Revenue のサポートされていない数式を含む数式列
  • 数式での通貨列と為替レートの直接使用は、現在サポートされていません。 通貨および為替レートの列の使用は、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() を文字列関数にパラメーターとして渡すことはできません。 サポートされていない日付時刻パラメーターが数式に渡された数式列

ロールアップ フィールドでの数式列の使用

  • 単純な数式列 では、数式が同じレコードの列を使用するか、ハードコードされた値を使用します。 ロールアップ列の場合、数式列は、このロールアップ列の例のように、単純な数式列である必要があります。 ロールアップ列の単純な数式列の例 ロールアップ列の構成例

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"
    
  • 計算式列はロケール固有の書式トークン ("." や "," など) をサポートしていません。 数式内の Text 関数にパラメーターとして渡されるロケール固有の書式設定トークンはサポートされていません

数式列の範囲検証

  • 数式列の 最小値 または 最大値 のプロパティは設定できません。
  • すべての内部計算は、小数型の数式列の 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() にはタイムゾーンに依存しない動作があります。
  • 小数列の精度プロパティを設定できます。

Power Fx 関数は現在サポートされていません

  • 電源
  • Sqrt
  • Exp
  • Ln
  • ^ (演算子)

生成できないデータ型の数式列

  • 整数
  • 選択肢 (はい/いいえの選択肢を除く)
  • 通貨型

参照

列の種類

Microsoft Power Fx の概要

コードを使用した数式列、計算列、ロールアップ列