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
- Rufen Sie den Wrangler-Arbeitsbereich in Cloud Data Fusion auf.
Ö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 Datentypdecimal
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 inBigDecimal
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
oderDOUBLE
.
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 namensoutput-column
ausgegeben:set-column : output-column exp:{new("java.math.BigDecimal", "cost").setScale(9)}
- Wenn eine Datenbank oder BigQuery-Verbindung eine Dezimalspalte hat, konvertiert Wrangler sie in den Typ
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.