使用公式欄
公式欄是在 Microsoft Dataverse 表格中顯示計算值的欄。 公式使用 Power Fx,這是一種功能強大,適合人類使用的程式設計語言。 在 Dataverse 公式欄中建立公式的方法與在 Microsoft Excel 中建立公式的方法相同。 在您輸入時,Intellisense 會建議函數和語法,甚至可協助您修正錯誤。
新增公式欄
在 https://make.powerapps.com 登入 Power Apps
選取表格,然後選取要新增公式欄的表格。 如果此項目不在側邊面板窗格中,請選取 ...其他 ,然後選取您想要的項目。
選取欄區域,然後選取新的欄。
輸入下列資訊:
- 欄的顯示名稱。
- 也可以輸入該欄的描述。
如果是資料類型,請選取 fx公式。
輸入公式或使用公式建議:
在公式方塊中輸入 Power Fx 公式。 其他資訊:輸入公式
- 選取其他屬性:
- 如果您想讓此行可用於檢視表、圖表、儀表板和進階尋找中,請選取可被搜尋。
- 進階選項:
- 如果公式估算至小數值,請展開進階選項來變更有效位數 (介於 0 與 10 之間)。 預設值是 2。
- 選取儲存。
輸入公式
以下範例將建立一個名為總價的公式欄。 單位數量欄是整數資料類型。 價格欄是小數資料類型。
公式欄顯示價格乘以單位數量的結果。
您輸入的公式決定欄類型。 建立欄後,即無法變更欄類型。 這代表您只能在不會變更欄類型的情況下,才可以在建立欄後變更公式。
例如,公式 price * discount 建立數字欄類型。 您可以將 price * discount 變更為 price * (discount + 10%),因為這並不會變更欄類型。 不過您無法將 price * discount 變更為 Text(price * discount),因為這需要將欄類型變更為字串。
取得公式建議 (預覽版)
[本主題是發行前版本文件,並可能在未來變更。]
描述您想要公式算出的內容,然後取得由 AI 產生的結果。 公式建議接受您的自然語言輸入,以解讀並建議一個使用 GPT 型 AI 模型的 Power Fx 公式。
重要
這是預覽功能,僅限美國地區使用。
預覽功能不供生產時使用,而且可能功能受限。 這些功能是在正式發行前先行推出,讓客戶能夠搶先體驗並提供意見反應。
目前支援參照單一表格的公式建議。 不支援參照相關表格上資料行的公式建議。
先決條件
若要啟用此功能,您必須啟用公式欄的 AI 建議環境設定。 其他資訊:公式欄的 AI 建議
自然語言輸入範例
設想有一客戶評分資料行,其中會根據帳戶顯示他們的評等。
在取得公式建議方塊中,以自然語言輸入公式,例如, 如果評分行上的分數等於或大於 5則表示為良好,如果小於 5,則表示為中等,如果是空白或零,則顯示為差,然後選取箭頭按鈕 (輸入)。
然後複製建議的公式。
並將它貼到輸入公式方塊中。 選取儲存。
以下是在貼上時,公式顯示的方式。
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 的資訊,請移至下列資源:
運算子
您可以在公式欄中使用下列運算子:
+、-、*、/、 %、in、exactin、&
如需詳細資訊,請移至 Power Apps 中的運算子。
資料類型
您可以在公式欄中顯示以下資料類型:
貨幣和選擇(以前稱為選項集)數據類型目前不受支援。
函數類型
您可以在公式欄中使用以下函數類型:
- 小數點
- 字串
- 布林值
- 選項組
- 日期時間 (TZI)
- 日期時間 (使用者地區設定) (限於與其他使用者地區 DateAdd 和 DateDiff 函數值進行比較)
- 日期時間 (僅限日期) (限於與其他僅限日期值、DateAdd 與 DateDiff 函數進行比較)
- 貨幣
- 整數,已提升為小數
函式
您可以在公式欄中使用以下純量函數:
Value *
Text *
小數*
* Text 和 Value 函數僅適用於不涉及小數分隔符號的整數。 小數點分隔符號會因地區設定而異。 因為是在沒有地區設定知識的情況下評估公式欄,欄此無法正確解釋或產生小數點分隔符號。
*公式欄中的 WeekNum 和 Weekday 函數不支援 StartOfWeek 引數。
函數範例
Description | 範例 |
---|---|
檢索日期值。 | DateAdd(UTCNow(),-1,TimeUnit.Years) |
創建小數公式列
創建一個返回十進位數的公式列。
- 建立欄時,請輸入以下資訊:
- 欄的顯示名稱。
- 也可以輸入該欄的描述。
- 如果是資料類型,請選取 fx公式。
- 輸入一個公式,該公式在 “編輯 ”欄中返回一個數值。 本示例創建一個名為 “Total Amount”的公式列。 單價 列是十進位數據類型。
- 展開「 高級選項」,選擇 「十進位 」作為「 公式」 數據類型,然後設置所需的小數位數。
- 選取儲存。
創建整數公式列
創建一個返回整數的公式列。
- 建立欄時,請輸入以下資訊:
- 欄的顯示名稱。
- 也可以輸入該欄的描述。
- 如果是資料類型,請選取 fx公式。
- 輸入一個公式,該公式在 “編輯 ”欄中返回一個數值。 本示例創建一個名為 「單位數」 的公式列。 Total Price 和 單價 columns 是 decimal 數據類型。
- 展開「 高級選項」,然後選擇「 整數 」作為「公式」 數據類型, 併為整數列設置所需的格式。
- 選取儲存。
指導方針與限制
本節描述 Dataverse 中公式欄的指導方針和已知限制。
貨幣欄位使用驗證
- 公式欄不支援在公式中使用相關表格貨幣欄,如此範例中所示。
- 目前不支援在公式中直接使用貨幣欄和匯率。 貨幣和匯率欄的使用可透過
Decimal
函式來完成,例如Decimal(currency column)
或Decimal(exchange rate)
。 此Decimal
函式可確保輸出介於可接受的範圍內。 如果貨幣或匯率欄值超過可接受的範圍,則公式會傳回 null。 - 不支援在公式欄運算式中使用基準貨幣欄,因為這些欄是用於報表目的的系統欄。 如果您想要類似的結果,可以使用貨幣欄類型,加上匯率欄的組合,如
CurrencyField_Base = (CurrencyField / ExchangeRate)
。
日期時間欄使用驗證
- 日期時間公式欄的行為只有在其他公式欄中未使用時,才能更新。
- 使用
DateDiff
函數時,針對日期時間公式欄,請確定:- 使用者地區行為欄無法與
DateTime(TZI)/DateOnly
行為欄進行比較或搭配使用。 - 使用者地區行為欄只能與其他使用者地區行為欄進行比較或搭配使用。
DateTime(TZI)
行為欄可以與另一個DateTime(TZI)/DateOnly
行為欄進行比較或一起用於DateDiff
函數中。DateOnly
行為欄可以與另一個DateTime(TZI)/DateOnly
行為欄進行比較或一起用於 DateDiff 函數中。
- 使用者地區行為欄無法與
- 日期時間欄和日期時間函數
UTCNow()
、Now()
不能作為參數傳遞給字串函數。
彙總資料行中的公式欄使用
- 簡單公式欄是指公式使用來自相同記錄的欄,或是使用硬編碼值。 彙總資料行的公式欄必須是簡單公式欄,例如這個範例彙總資料行。
- 依賴時間限制函數
UTCNow()
和UTCToday()
的公式欄不能在匯總欄位中使用。
Power Fx文字函式建議
公式欄不支援具有單一引數類型數字的
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()
具有時區不轉換行為。- 您可以設定小數位欄的精準度屬性。
- 對於返回公式的數值,預設公式數據類型值設置為 十進位 。
- 不支援更新整數公式列的格式。
目前不支援 Power Fx 函數
- Power
- Sqrt
- Exp
- Ln
- ^ (運算子)
無法產生的資料類型公式欄
- 選項 (是/否選項除外)
- 貨幣