NUMFORMAT 函式

根據指定的數字格式,設定一組數值的格式。來源值可以是含有整數或小數值的資料欄參照。
  • 如果來源值不包含適用於這個函式的有效輸入值,則會傳回遺漏值。
  • 套用 NUMFORMAT 轉換時,資料欄可重新設為不同的資料類型。舉例來說,如果您的格式字串 (第二個參數) 是 '#' (單個雜湊標記),則所有值均會四捨五入到最近的整數,且資料欄會重設為整數類型。

    提示:一般來說,您應該先完成相關計算,再設定數字資料的格式。在某些情況下,轉換格式後可能會讓您失去數字精確度,或是資料重設為不同的資料類型 (例如小數改為整數)。

  • 如要進一步瞭解如何設定日期值的格式,請參閱 DATEFORMAT 函式

Cloud Dataprep by TRIFACTA® 支援各種符合 Java 標準的數字格式。詳情請參閱 Java 的說明文件。

附註:此函數僅變更基礎儲存格值的顯示方式。如果想將值四捨五入到特定的精確度,請使用 ROUND 函式。請參閱 ROUND 函式

基本用法

derive type:single value: NUMFORMAT(MyPrice, '$###,###.##') as: 'dateformat_MyPrice'

輸出:產生一個資料欄,其中包含來自 MyNum 資料欄並已轉換成價格格式的值。

語法

derive type:single value:NUMFORMAT(numeric_col, number_format_string)

引數是否必要?資料類型說明
numeric_col字串、整數或小數要轉換值格式的整數或小數資料欄名稱
number_format_string字串數字格式字串要套用的文字值

如要進一步瞭解語法標準,請參閱語言文件語法附註一文。

numeric_col

整數或小數資料要轉換格式的資料欄名稱。

  • 這個函式會截斷小數點後位數超過 20 位的值。

  • 此函式的來源資料如果有遺漏值,輸出結果也會出現遺漏值。
  • 不支援多個資料欄和萬用字元。

使用須知:

是否必要?資料類型示例值
字串 (資料欄參照)、整數或小數文字MyPrice

number_format_string

字串值,表示輸入值要套用的數字格式。

注意事項:您無法建立 # 值前面為 0 值的數字格式字串。以下為不支援的字串範例:#.#0、#.#0#、#.#00

部分重要的代碼:

代碼說明格式字串範例輸入範例輸出範例
#如果出現在資料中,則插入一個數字。

'###,###'

99

999

1000

10000

99

999

1,000

10,000

0即使未出現在資料中,仍插入一個數字。'00.##'

20

7.1

20

07.1

$您可以在運算式中新增常數值。允許使用空格。
例如,您可以在運算式開頭插入貨幣標記。
'$ ##.##'20
2514.22
6.6666
$ 20
$ 2514.22
$ 6.67
%百分比運算式可以放在數字格式運算式的尾端。'##.## %'20
2514.22
6.6666
20 %
2514.22 %
6.67%

Cloud Dataprep by TRIFACTA 支援 Java 數字格式字串,但有一些例外情況。

此函式的來源資料如果有遺漏值,輸出結果也會出現遺漏值。

使用須知:

是否必要?資料類型示例值
字串'#.#'

範例

範例 - 設定價格與百分比的格式

本範例逐步說明當您必須對應用程式中的資料執行一些計算時,如何管理價格和百分比資料的數字格式。

來源:

在這個範例中,您必須計算小計資料欄和總計資料欄。

OrderIdQtyUnitPriceDiscountTaxRate
10015$25.000%8.25%
100215$39.995%8.25%
10032$99.9915%8.25%
1004100$999.990%8.25%

初次將這筆資料匯入轉換頁面時,您會注意到下列情況:

  • OrderId 的資料類型是整數,但應將其視為字串資料。
  • UnitPriceDiscountTaxRate 資料欄設為字串資料類型,這是因為其值包含單位字元。

注意事項:如果可以,請在匯入前先移除數字資料中的貨幣和三位數分隔符。

您可以將 OrderId 資料欄順利重設為字串類型。如果您重新設定另外三個資料欄的類型,會發現所有值均不相符。您可以使用下列的轉換指令移除貨幣和百分比標記法。第一個轉換指令使用 Cloud Dataprep 模式,從所有資料欄的每個值移除結尾的 % 符號。

replace col: * on: `\%{end}` with: ''

您可以使用相似的轉換指令,移除每個值開頭的 $ 符號:

replace col: * on: `{start}\$` with:''

套用這兩個轉換後,每個資料欄的資料類型即更新為數字類型:整數或小數。現在,您可以執行下列計算:

derive type:single value:(Qty * UnitPrice) as:'SubTotal'

您可以使用新的 SubTotal 資料欄做為計算 DiscountedTotal 資料欄的基礎 (計算會將折扣列入):

derive type:single value:(SubTotal - (SubTotal * (Discount / 100))) as:'DiscountedTotal'

Total 資料欄會將稅金套用至 DiscountedTotal 資料欄:

derive type:single value: DiscountedTotal * (1 + (TaxRate / 100)) as: 'Total'

由於原始資料套用了數學運算,您的值可能已經不太像是美元資訊。現在,您可以將資料欄套用價格格式設定。下列指令會變更 SubTotal 資料欄的數字格式:

set col:SubTotal value:NUMFORMAT(SubTotal, '#.00')

請注意,加入前置的 $ 會將資料變更為字串類型,因此不會將符號加回資料中。您可以將這個轉換指令套用到 PriceDiscountedTotalTotal 資料欄。

注意事項:資料欄的資料類型應符合下游數據分析系統預期的輸入內容。

DiscountTaxRate 值應轉換成小數。下列指令會調整 Discount 資料欄:

set col:Discount value:(Discount / 100)

結果:

輸出資料應如下所示:

OrderIdQtyUnitPriceSubTotalDiscountDiscountedTotalTaxRateTotal
1001525.00125.000125.000.0825135.31
10021539.99599.850.05569.860.0825616.87
1003299.99199.980.15169.980.0825184.01
1004100999.9999999.00099999.000.0825108248.92

另請參閱

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Google Cloud Dataprep 說明文件
需要協助嗎?請前往我們的支援網頁