使用小數資料

本頁說明如何在 Cloud Data Fusion Studio 的 Wrangler 工作區中準備資料時,將欄位轉換為小數並執行轉換作業。

讀取小數資料

  1. 前往 Cloud Data Fusion 中的 Wrangler 工作區
  2. 從資料庫或 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:要轉換的資料欄,可為下列任一類型:STRINGINTEGERLONGFLOATDOUBLE

    • 如果資料集包含不同比例的值,例如 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)}
      

轉換小數資料

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:作業中包含的第二個小數資料欄,例如當您將兩個小數資料欄的值加總時。

後續步驟