Mit Dezimaldaten arbeiten

Auf dieser Seite wird erläutert, wie Sie Felder in Dezimalzahlen umwandeln und Transformationen darauf ausführen, wenn Sie Daten im Wrangler-Arbeitsbereich von Cloud Data Fusion Studio vorbereiten.

Dezimaldaten lesen

  1. Rufen Sie den Wrangler-Arbeitsbereich in Cloud Data Fusion auf.
  2. Öffnen Sie ein Objekt, z. B. eine Tabelle, aus einer Datenbank oder einer Cloud Storage-Datei.

    • Wenn eine Datenbank oder BigQuery-Verbindung eine Dezimalspalte hat, konvertiert Wrangler sie in den Typ BigDecimal. Wenn Sie die Pipeline in Wrangler erstellen, wird die Spalte in den Datentyp decimal umgewandelt.
    • Wenn Ihr Datensatz nicht dezimale Daten enthält, die Sie in Dezimalzahlen umwandeln möchten, verwenden Sie die Direktive set-column:

      set-column : DECIMAL_COLUMN exp:{new("java.math.BigDecimal", INPUT_COLUMN)}
      

      Ersetzen Sie Folgendes:

      • DECIMAL_COLUMN: Die Dezimalspalte, die transformiert werden soll. Nach der Ausführung der Direktive ändert sich der Datentyp der Spalte in BigDecimal und das Schema enthält auch den entsprechenden Datentyp.

      • INPUT_COLUMN: Die Spalte, die konvertiert wird. Sie kann einen der folgenden Typen haben: STRING, INTEGER, LONG, FLOAT oder DOUBLE.

    • Wenn Ihr Datensatz Werte mit unterschiedlichen Skalen enthält, z. B. 1,05, 2,698 oder 5,8745512, legen Sie die Skala mit einer Wrangler-Richtlinie fest und bearbeiten Sie das Schema in der Pipeline, um die Skala für die Dezimalspalte festzulegen.

      Verwenden Sie eine Anweisung wie die folgende, um den Maßstab in Wrangler festzulegen:

      set-column : OUTPUT_COLUMN exp:{new("java.math.BigDecimal", DECIMAL_COLUMN).setScale()}
      

      Im folgenden Beispiel wird eine Spalte namens cost von einem String in einen Dezimalformat konvertiert, eine Skala von 9 festgelegt und die Ergebnisse in einer neuen Spalte namens output-column ausgegeben:

      set-column : output-column exp:{new("java.math.BigDecimal", "cost").setScale(9)}
      

Dezimaldaten transformieren

Für Dezimalspalten in Wrangler wird die Java-Klasse „BigDecimal“ verwendet. Nachdem die Spalten in den Datentyp „BigDecimal“ konvertiert wurden, transformieren Sie sie mit Methoden aus Class BigDecimal.

Transformation Anweisung
Absoluten Wert ermitteln set-column : OUTPUT_COLUMN DECIMAL_COLUMN.abs()
Genauigkeit eines Dezimalwerts abrufen set-column : OUTPUT_COLUMN DECIMAL_COLUMN.precision()
Skala eines Dezimalwerts abrufen set-column : OUTPUT_COLUMN DECIMAL_COLUMN.scale()
Unskalierten Wert eines Dezimalwerts abrufen set-column : OUTPUT_COLUMN DECIMAL_COLUMN.unscaledValue()
Zwei Dezimalspalten hinzufügen set-column : OUTPUT_COLUMN DECIMAL_COLUMN.add(DECIMAL_COLUMN_2)
Eine Dezimalzahl von einer anderen abziehen set-column : OUTPUT_COLUMN DECIMAL_COLUMN.subtract(DECIMAL_COLUMN_2)
Dezimalzahlen miteinander multiplizieren set-column : OUTPUT_COLUMN DECIMAL_COLUMN.multiply(DECIMAL_COLUMN_2)
Eine Dezimalzahlspalte durch eine andere dividieren und den Quotienten zurückgeben set-column : OUTPUT_COLUMN DECIMAL_COLUMN.divide(DECIMAL_COLUMN_2)
Eine Dezimalzahlspalte durch eine andere dividieren und den Rest zurückgeben set-column : OUTPUT_COLUMN DECIMAL_COLUMN.remainder(DECIMAL_COLUMN_2)
Dezimalzahl in eine Ganzzahl umwandeln set-column : OUTPUT_COLUMN DECIMAL_COLUMN.intValue()
Dezimalzahl in Long konvertieren set-column : OUTPUT_COLUMN DECIMAL_COLUMN.longValue()
Dezimalzahl in eine Gleitkommazahl umwandeln set-column : OUTPUT_COLUMN DECIMAL_COLUMN.floatValue()
Dezimalzahl in einen Double-Wert konvertieren set-column : OUTPUT_COLUMN DECIMAL_COLUMN.doubleValue()
Prüfen, ob ein Dezimalwert einem anderen entspricht set-column : OUTPUT_COLUMN DECIMAL_COLUMN.equals(DECIMAL_COLUMN_2)
Maximum von zwei Dezimalspalten ermitteln set-column : OUTPUT_COLUMN DECIMAL_COLUMN.max(DECIMAL_COLUMN_2)
Minimum von zwei Dezimalspalten ermitteln set-column : OUTPUT_COLUMN DECIMAL_COLUMN.min(DECIMAL_COLUMN_2)
Dezimalpunkt um n Stellen nach links verschieben set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointLeft(n)
Dezimalpunkt um n Stellen nach rechts verschieben set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointRight(n)
Die n-te Potenz einer Dezimalzahl ermitteln set-column : OUTPUT_COLUMN DECIMAL_COLUMN.pow(n)
Dezimalzahl negieren set-column : OUTPUT_COLUMN DECIMAL_COLUMN.negate()
Endnullen in einer Dezimalzahl entfernen set-column : OUTPUT_COLUMN DECIMAL_COLUMN.stripTrailingZeros()

Ersetzen Sie Folgendes:

  • OUTPUT_COLUMN: Die Spalte mit der Ausgabe der Operation.
  • DECIMAL_COLUMN: die dezimale Spalte, die transformiert wird.
  • DECIMAL_COLUMN_2: Die zweite Dezimalspalte, die in den Vorgang einbezogen ist, z. B. wenn Sie die Werte aus zwei Dezimalspalten addieren.

Nächste Schritte