公式 v2 與儲存結果
明確選用版本
formula_version 只適用 formula 欄位;省略表示版本 1,不是最新語言。computation_mode 預設 live;stored 必須搭配 formula_version: 2。既有 legacy 公式不會自動改語言或變成 stored。
對既有、無單位的 decimal Amount,下列原生建欄 body 儲存其取位結果:
{
"name": "Rounded amount",
"type": "formula",
"formula_version": 2,
"computation_mode": "stored",
"expression": "ROUND([Amount], 2)"
}相同欄位可放入 IaC column line 的 spec。結果由伺服器產生,不要在 record input、import 或 Command assignment 提交。精確小數結果使用字串,不用 JavaScript Number。
相依界線
V2 驗證無單位、精確的同列 scalar,拒絕 float、lookup、rollup、native link、JSON、attachment、interval 與跨表參照。公式相依本身必須為 v2;stored 公式不能依賴 live 公式或 server-assigned sequence。現行讀取 ACL 與 computed-value 遮罩仍有效:儲存結果不會解除來源或相依結果的遮罩。
對 unique_tuple 規則而言,stored 結果同樣是 stored scalar:規則可以將 stored formula 欄位當作 component,而 Command insert step 的 on_conflict 也會比對一般 insert 會儲存的那個值(見 upsert)。live 公式不能作為 unique component。
擴充函式
V2 保留 legacy 函式並新增下列已註冊項目:
| 分類 | 新增函式 |
|---|---|
| 邏輯 | NOT、IFS、ISBLANK |
| 文字 | TRIM、LEFT、RIGHT、MID、SUBSTITUTE、VALUE |
| 精確運算 | ABS、MIN、MAX、MOD、ROUND、ROUNDUP、ROUNDDOWN |
| 日期 | DATE、DAY、WEEKDAY、DATEADD、EDATE、EOMONTH |
| 工作日 | WORKDAY(start, count [, "calendar_key"])、NETWORKDAYS(start, end [, "calendar_key"])、ISWORKDAY(day [, "calendar_key"]) |
每個函式有參數數量上限與型別驗證。新欄位用 create preview,修改既有 v2 expression 前用 identity-bound update preview。公式函式不會自動成為 Command expression operator 或 SQL-pushdown 能力。
座標運算子頁另外描述 v2 coordinate source 及 DISTANCE、AXIS、WITHIN、BEARING、DOT、NORM。
版本化工作日與 Commands
日曆屬公司所有,以不可變版本保存。default 版本 0 為週一至週五、無 exception。自訂定義用 weekdays 與逐日 {date, working} 例外。例外可帶選用的純文字 label,不會改變任何結果;路由、唯讀 API key scope 與 label 限制見工作日行事曆。公式 calendar key 必須是靜態引號字串,不是 row expression;省略使用 default。既有 date 欄位可用 v2 expression WORKDAY([Start date], 3, "default")。
明確採用工作日版本會原子重算受影響的 stored value 與日曆來源證據。在 commands_only 表上,這是 kernel-only derived_recompute,不是允許編輯業務欄位的例外。history 記錄採用 actor/日曆版本;此維護不發出一般業務 event/trigger。
Command 編譯、相依契約與 runtime 讀取使用真實欄位版本及 stored/live 模式;凍結執行仍檢查來源/日曆相依。Command DSL 與公式語言版本是分開的設定。
來源為 backend #1865、#1890、#1900。核心更新補齊記錄來源/部署界線;本頁不宣稱新增產品測試或 rollout。