このページでは、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() |
2 つの小数列を追加する | 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() |
小数を long に変換する | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.longValue() |
小数を浮動小数点数に変換する | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.floatValue() |
小数を double に変換する | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.doubleValue() |
小数値が別の小数値と等しいかどうかを確認する | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.equals(DECIMAL_COLUMN_2) |
2 つの小数列の最大値を求める | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.max(DECIMAL_COLUMN_2) |
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
: 2 つの小数列の値を加算する場合など、オペレーションに含まれる 2 番目の小数列。
次のステップ
- Wrangler ディレクティブの詳細を確認する。