小数データを操作する

このページでは、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()
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 番目の小数列。

次のステップ