使用公式列

公式列是在 Microsoft Dataverse 表中显示计算值的列。 公式使用 Power Fx一种功能强大但对人类友好的编程语言。 在 Dataverse 公式列中构建公式的方式与在 Microsoft Excel 中构建公式的方式相同。 在您键入时,Intellisense 会建议函数和语法,甚至可以帮助您修复错误。

添加公式列

  1. https://make.powerapps.com 登录到 Power Apps。

  2. 选择 ,然后选择要在其中添加公式列的表。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。

  3. 选择 Columns(列) 区域,然后选择选择 New column(新建列)

  4. 输入以下信息:

    • A 显示名称
    • (可选)输入 列的 Description
  5. 对于 Data type (数据类型)选择 fx Formula(fx 公式)。

  6. 键入公式或使用公式建议:

    Power Fx 在 公式 框中输入公式。 详细信息: 键入公式


  1. 选择其他属性:
    • 如果您希望此列在视图、图表、控制面板和高级查找中可用,请选择 搜索。
    • 高级选项
      • 如果公式的计算结果为十进制值,请展开 Advanced options(高级选项 )以更改精度点数(介于 0 和 10 之间)。 默认值为 2。
  2. 选择保存

键入公式

以下示例创建一个名为 Total price 公式列。 Number of units 列是整数数据类型。 Price 列是十进制数据类型。

公式列定义的屏幕截图。

公式列显示 Price 乘以 Number of units 的结果

带有公式列的记录的屏幕截图。

您输入的公式确定列类型。 创建列后,您将无法更改列类型。 这意味着,只有在列不更改列类型时,您才能在创建列后更改公式。

例如,公式 price * discount 会创建一个 number 的列类型。 您可以将 price * discount 更改为 price *(discount + 10%) ,因为这不会更改列类型。 但是,您不能将 price * discount 更改为 Text(price * discount), 因为这需要将列类型更改为 string。

获取公式建议(预览版)

[本主题是预发行文档,有可能会有所更改。]

描述您希望公式做什么并获取 AI 生成的结果。 公式建议接受您的自然语言输入,使用基于 GPT 的人工智能模型来解释和建议 Power Fx 公式。

重要提示

这是一项预览功能,仅在美国地区可用。

预览功能不适合生产使用且功能可能受限。 这些功能在正式发布之前推出,以便客户可以提前使用并提供反馈。

当前,支持引用单个表的公式建议。 不支持引用相关表上的列的公式建议。

先决条件

要启用此功能,您必须启用 AI suggestions for formula columns(公式列 的 AI 建议)环境设置。 详细信息: 公式列的 AI 建议

自然语言输入示例

假设有一个 Customer rating(客户评分 )列,该列按客户显示他们的评分。 客户评分列示例

在“获取公式建议 框中,以自然语言输入公式,例如,如果 评级列上的评级等于或大于 5,则指示为“好”,如果小于 5,则表示为“平均值”,如果值为空或零,则显示为“差”,然后选择箭头按钮(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"
)

检查计算 的 Rating Description 公式列,如下所示。

检查公式列的结果

负责 AI

有关负责任的 AI 的信息,请转到以下资源:

Operators

您可以在公式列中使用以下运算符:
+、-、*、/、%、in、exactin、&

有关更多信息,请转到 Operators in Power Apps

数据类型

您可以在公式列中显示以下数据类型:

详细信息: 创建具有小数、整数、浮点数和选择数据类型的公式列\

目前不支持 currency 数据类型。

函数类型

您可以在公式列中使用以下函数类型:

  • 小数
  • String
  • 布尔型
  • 单选
  • 日期/时间 (TZI)
  • 日期/时间(用户本地)(仅限于与其他用户本地值 DateAdd 和 DateDiff 函数进行比较)
  • 日期/时间(仅限日期)(仅限于与其他纯日期值和 DateAdd 和 DateDiff 函数进行比较)
  • Currency
  • 整数

函数

对于可以在公式列中使用的标量函数,请转到 公式参考 - Dataverse 公式列

* TextValue 函数仅适用于整数,其中不涉及小数分隔符。 小数分隔符因地区而异。 由于系统在不了解区域设置的情况下计算公式列,因此无法正确解释或生成小数分隔符。

* 公式列中的 WeekNum 和 Weekday 函数不支持 StartOfWeek 参数。

函数示例

Description 示例
检索日期值。 DateAdd(UTCNow(),-1,TimeUnit.Years)

准则和限制

本节介绍 Dataverse 中公式列的准则和已知限制。

货币字段使用情况验证

  • 公式列不支持在公式中使用相关表货币列,如本例中所示。 公式列包含不支持的 Account.Annual Revenue 公式
  • 当前不支持直接在公式中使用货币列和汇率。 货币和汇率列的使用是通过 Decimal 函数实现的,例如 Decimal(currency column) or Decimal(exchange rate)。 该 Decimal 函数确保输出在可接受的范围内。 如果货币或汇率列值超出接受的范围,公式将返回 NULL。
  • 公式列表达式不支持基础货币列,因为它们是用于报告目的的系统列。 如果需要类似的结果,可以将 currency 列类型与 exchange rate 列组合 CurrencyField_Base = (CurrencyField / ExchangeRate)一起使用。

日期时间列使用情况验证

  • 日期时间公式列的行为只能在其他公式列未使用它时更新。
  • 对于日期时间公式列,在使用该 DateDiff 函数时,请确保:
    • 用户本地行为列不能与 DateTime(TZI)/DateOnly 行为列进行比较或使用。
    • 用户当地时间行为列只能与其他用户当地时间列进行比较或一起使用。
    • DateTime(TZI) 行为列可以与另一个 DateDiff 行为列进行比较或在函数中使用 DateTime(TZI)/DateOnly
    • DateOnly behavior 列可以在 DateDiff 函数中与另一个 DateTime(TZI)/DateOnly 行为列进行比较或使用。 公式列的日期时间配置不受支持
  • 日期时间列和日期时间函数 UTCNow()Now() 不能作为参数传递给字符串函数。 公式列中传入了不支持的日期时间参数

汇总字段中的公式列使用情况

  • 简单公式列 是公式使用同一记录中的列或使用硬编码值的位置。 对于汇总列,公式列必须是简单公式列,例如本例中的汇总列。 汇总列的简单公式列示例汇总列配置示例
  • 公式列,它依赖于有时限的函数 UTCNow()UTCToday() 不能在汇总字段中使用。

Power Fx Text 函数建议

  • 公式列不支持 Text() 具有 Number 类型的单个参数的函数。 数字可以是整数、小数或货币。 公式列包含不支持的文本函数(带有数字参数)

  • 公式列不支持在以下配置中使用数字:

    • 在字符串函数中。 这些字符串函数放置在需要文本参数的位置:Upper、Lower、Left、Right、Concatenate、Mid、Len、StartsWith、EndsWith、TrimEnds、Trim、Substitute 和 Replace。
    • 在隐式公式中,例如 12 & "foo" or、 12 & 34or "foo" & 12
    • 不支持将内部数字强制转换为文本。 我们建议使用 Text(Number, Format) 将数字转换为文本。 如果在函数中 String 传递了 Text 参数,则不支持该 Format 参数。
    • 下面是一个使用 Text 该函数将数字转换为文本并向其附加字符串的示例:
    Concatenate(Text(123,"#"),"ab")
    Text(123,"#") & "foo"
    
  • 公式列中不支持特定于区域设置的格式标记,例如 "." 和 ","。 在公式中作为参数传递给文本函数的不受支持的区域特定格式标记

公式列的范围验证

  • 您无法设置 公式列的 Minimum value (最小值)或 Maximum value (最大值)属性。
  • 所有内部计算应位于小数类型公式列的 Dataverse 范围内(-100000000000 到 100000000000)。
  • 在公式栏中输入的硬编码文字值应位于 Dataverse 范围内。
  • 如果数字列为 NULL,它在中间操作中将会视为 0。 例如, a+b+c and If a = null, b=2, c=3 then formula column 给出 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
  • 不支持更新整数公式列的格式。

无法生成的数据类型的公式列

  • Currency

另请参见

列的类型

Microsoft Power Fx 概述

使用代码的公式列、计算列和汇总列