本页面介绍了如何将字段转换为小数并执行 在 Wrangler 工作区中准备数据时,会进行转换 Cloud Data Fusion Studio。
读取十进制数据
- 转到 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 指令。