使用公式欄
公式欄是在 Microsoft Dataverse 表格中顯示計算值的欄。 公式使用 Power Fx一種功能強大但對人類友好的程式設計語言。 在 Dataverse 公式欄中建立公式的方法與在 Microsoft Excel 中建立公式的方法相同。 在您輸入時,Intellisense 會建議函數和語法,甚至可協助您修正錯誤。
新增公式欄
在 https://make.powerapps.com 登入 Power Apps。
選取資料表,然後選取要新增公式欄的資料表。 如果此項目不在側邊面板窗格中,請選取 ...其他 ,然後選取您想要的項目。
選擇 Columns(列 ) 區域,然後選擇 New column( 新建列)。
輸入下列資訊:
- A 顯示名稱 表示列。
- (可選)輸入 列的 Description 。
對於 Data type ( 數據類型),選擇 fx Formula (fx 公式)。
輸入公式或使用公式建議:
Power Fx 在 公式 框中輸入公式。 詳細資訊: 鍵入公式
- 選擇其他屬性:
- 如果您希望此列在檢視、圖表、控制面板和高級查找中可用,請選擇 Searchable (可 搜索)。
- 進階選項:
- 如果公式的計算結果為十進位值,請展開 Advanced options (高級選項 ) 以更改精度點數 (介於 0 和 10 之間)。 預設值是 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 型 AI 模型的 Power Fx 公式。
重要
這是預覽功能,僅限美國地區使用。
預覽功能不供生產時使用,而且可能功能受限。 這些功能是在正式發行前先行推出,讓客戶能夠搶先體驗並提供意見反應。
目前支援參照單一表格的公式建議。 不支援參照相關表格上資料行的公式建議。
必要條件
要啟用此功能,您必須啟用 AI suggestions for formula columns 環境設置。 詳細資訊: 公式列的 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 的資訊,請移至下列資源:
運算子
您可以在公式欄中使用下列運算子:
+、-、*、/、%、in、exactin、&
有關更多資訊,請轉到 Operators in Power Apps。
資料類型
您可以在公式欄中顯示以下資料類型:
詳細資訊: 創建具有小數、整數、浮點數和選擇數據類型的公式列\
目前不支援 currency 數據類型。
函數類型
您可以在公式欄中使用以下函數類型:
- 小數點
- 字串
- 布林值
- 選擇
- 日期時間 (TZI)
- 日期時間 (使用者地區設定) (限於與其他使用者地區 DateAdd 和 DateDiff 函數值進行比較)
- 日期時間 (僅限日期) (限於與其他僅限日期值、DateAdd 與 DateDiff 函數進行比較)
- 貨幣
- 整數
函式
對於可以在公式列中使用的標量函數,請轉到 公式參考 - Dataverse 公式列。
* Text 和 Value 函數僅適用於整數,其中不涉及小數分隔符。 小數點分隔符號會因地區設定而異。 因為是在沒有地區設定知識的情況下評估公式欄,欄此無法正確解釋或產生小數點分隔符號。
* 公式列中的 WeekNum 和 Weekday 函數不支援 StartOfWeek 參數。
函數範例
Description | 範例 |
---|---|
檢索日期值。 | DateAdd(UTCNow(),-1,TimeUnit.Years) |
指導方針與限制
本節描述 Dataverse 中公式欄的指導方針和已知限制。
貨幣欄位使用驗證
- 公式欄不支援在公式中使用相關表格貨幣欄,如此範例中所示。
- 目前不支援在公式中直接使用貨幣欄和匯率。 貨幣和匯率列的使用是通過
Decimal
函數實現的,例如Decimal(currency column)
orDecimal(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()
具有 Number 類型的單個參數的函數。 數字可以是整數、小數或貨幣。公式欄不支援在下列設定中使用數字:
- 在字串函數中。 這些是所有需要文字引數的字串函數:Upper、Lower、Left、Right、Concatenate、Mid、Len、StartsWith、EndsWith、TrimEnds、Trim、Substitute 和 Replace。
- 在隱式公式中,例如
12 & "foo"
or、12 & 34
or"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 。
- 不支援更新整數公式列的格式。
無法產生的資料類型公式欄
- 貨幣