本頁說明如何在 Cloud Data Fusion Studio 的 Wrangler 工作區中準備資料時,將欄位轉換為小數並執行轉換作業。
讀取小數資料
- 前往 Cloud Data Fusion 中的 Wrangler 工作區。
從資料庫或 Cloud Storage 檔案開啟物件 (例如表格)。
- 對於資料庫或 BigQuery 連線,如果資料表含有小數欄,Wrangler 會將其轉換為
BigDecimal
類型。當您透過 Wrangler 建立管道時,資料欄就會轉換為decimal
資料類型。 如果資料集包含非小數資料,且您想將其轉換為小數,請使用
set-column
指令:set-column : DECIMAL_COLUMN exp:{new("java.math.BigDecimal", INPUT_COLUMN)}
更改下列內容:
DECIMAL_COLUMN
:要轉換的小數位數資料欄。指令執行後,資料欄的資料類型會變更為BigDecimal
,且結構定義也會包含適當的資料類型。INPUT_COLUMN
:要轉換的資料欄,可為下列任一類型:STRING
、INTEGER
、LONG
、FLOAT
或DOUBLE
。
如果資料集包含不同比例的值,例如 1.05、2.698、5.8745512,請使用 Wrangler 指令設定比例,並編輯管道中的結構定義,為小數欄設定比例。
如要在 Wrangler 中設定比例,請使用類似下列的指令:
set-column : OUTPUT_COLUMN exp:{new("java.math.BigDecimal", DECIMAL_COLUMN).setScale()}
以下範例會將名為
cost
的資料欄從字串轉換為十進制,並設定 9 的比例,然後將結果輸出至名為output-column
的新資料欄:set-column : output-column exp:{new("java.math.BigDecimal", "cost").setScale(9)}
- 對於資料庫或 BigQuery 連線,如果資料表含有小數欄,Wrangler 會將其轉換為
轉換小數資料
Wrangler 中的小數資料欄會使用 Java BigDecimal 類別。將資料欄轉換為 BigDecimal 資料類型後,請使用 Class BigDecimal
中的函式轉換資料欄。
轉換 | 指令 |
---|---|
取得絕對值 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.abs() |
取得小數值的精確度 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.precision() |
取得小數值的比例 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.scale() |
取得小數值的未經縮放的值 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.unscaledValue() |
新增兩個小數欄 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.add(DECIMAL_COLUMN_2) |
將小數從另一個小數中減去 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.subtract(DECIMAL_COLUMN_2) |
將小數與其他小數相乘 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.multiply(DECIMAL_COLUMN_2) |
將小數欄除以另一個小數欄,並傳回商 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.divide(DECIMAL_COLUMN_2) |
將小數欄除以另一個小數欄,並傳回餘數 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.remainder(DECIMAL_COLUMN_2) |
將小數轉換為整數 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.intValue() |
將小數轉換為長整型 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.longValue() |
將小數轉換為浮點 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.floatValue() |
將小數轉換為雙精度 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.doubleValue() |
檢查小數值是否與另一個相等 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.equals(DECIMAL_COLUMN_2) |
找出兩個小數欄的最大值 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.max(DECIMAL_COLUMN_2) |
找出兩個小數欄的最小值 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.min(DECIMAL_COLUMN_2) |
將小數點向左移動 n 個位置 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointLeft(n) |
將小數點向右移動 n 位 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointRight(n) |
取得小數的 n 次方 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.pow(n) |
將小數設為負值 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.negate() |
移除小數後方的零 | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.stripTrailingZeros() |
更改下列內容:
OUTPUT_COLUMN
:包含運算輸出的資料欄。DECIMAL_COLUMN
:經過轉換的十進位資料欄。DECIMAL_COLUMN_2
:作業中包含的第二個小數資料欄,例如當您將兩個小數資料欄的值加總時。
後續步驟
- 進一步瞭解 Wrangler 指令。