Questa pagina spiega come convertire i campi in decimali ed eseguire su di essi trasformazioni quando prepari i dati nello spazio di lavoro Wrangler di Studio di Cloud Data Fusion.
Leggere i dati decimali
- Vai allo spazio di lavoro Wrangler in Cloud Data Fusion.
Apri un oggetto, ad esempio una tabella, da un database o da un file Cloud Storage.
- Per un database o una connessione BigQuery, se la tabella contiene una colonna decimale, Wrangler la converte in un tipo
BigDecimal
. Quando crei la pipeline da Wrangler, la colonna viene convertita nel tipo di datidecimal
. Se il set di dati contiene dati non decimali che vuoi convertire in decimali, utilizza la direttiva
set-column
:set-column : DECIMAL_COLUMN exp:{new("java.math.BigDecimal", INPUT_COLUMN)}
Sostituisci quanto segue:
DECIMAL_COLUMN
: la colonna decimale da trasformare. Dopo l'esecuzione della direttiva, il tipo di dati della colonna diventaBigDecimal
e lo schema contiene anche il tipo di dati appropriato.INPUT_COLUMN
: la colonna che viene convertita, che può essere uno dei seguenti tipi:STRING
,INTEGER
,LONG
,FLOAT
oDOUBLE
.
Se il set di dati include valori con scale diverse, ad esempio 1,05, 2,698, 5,8745512, imposta la scala con una direttiva Wrangler e modifica lo schema nella pipeline per impostare la scala per la colonna decimale.
Per impostare la scala in Wrangler, utilizza un'istruzione simile alla seguente:
set-column : OUTPUT_COLUMN exp:{new("java.math.BigDecimal", DECIMAL_COLUMN).setScale()}
Il seguente esempio converte una colonna denominata
cost
da una stringa a un valore decimale, imposta una scala di 9 e restituisce i risultati in una nuova colonna denominataoutput-column
:set-column : output-column exp:{new("java.math.BigDecimal", "cost").setScale(9)}
- Per un database o una connessione BigQuery, se la tabella contiene una colonna decimale, Wrangler la converte in un tipo
Trasformare i dati decimali
Le colonne decimali in Wrangler utilizzano la classe BigDecimal di Java.
Dopo aver convertito le colonne nel tipo di dati BigDecimal, trasformale con i metodi di Class BigDecimal
.
Trasformazione | Direttiva |
---|---|
Ottenere il valore assoluto | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.abs() |
Ottenere la precisione di un valore decimale | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.precision() |
Ottenere la scala di un valore decimale | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.scale() |
Ottenere il valore non scalato di un valore decimale | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.unscaledValue() |
Aggiungere due colonne decimali | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.add(DECIMAL_COLUMN_2) |
Sottrarre un numero decimale da un altro | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.subtract(DECIMAL_COLUMN_2) |
Moltiplicare un decimale con un altro | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.multiply(DECIMAL_COLUMN_2) |
Dividere una colonna decimale per un'altra e restituire il quoziente | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.divide(DECIMAL_COLUMN_2) |
Dividere una colonna decimale per un'altra e restituire il resto | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.remainder(DECIMAL_COLUMN_2) |
Convertire un numero decimale in un numero intero | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.intValue() |
Convertire un numero decimale in un numero lungo | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.longValue() |
Convertire un numero decimale in un numero con virgola mobile | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.floatValue() |
Convertire un numero decimale in un numero doppio | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.doubleValue() |
Controlla se un valore decimale è uguale a un altro | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.equals(DECIMAL_COLUMN_2) |
Trovare il massimo di due colonne decimali | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.max(DECIMAL_COLUMN_2) |
Trovare il minimo di due colonne decimali | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.min(DECIMAL_COLUMN_2) |
Sposta la virgola decimale di n posizioni a sinistra | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointLeft(n) |
Sposta la virgola decimale di n posizioni a destra | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointRight(n) |
Ottenere l'ennesima potenza di un decimale | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.pow(n) |
Negare un numero decimale | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.negate() |
Rimuovere gli zeri finali in un numero decimale | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.stripTrailingZeros() |
Sostituisci quanto segue:
OUTPUT_COLUMN
: la colonna contenente l'output dell'operazione.DECIMAL_COLUMN
: la colonna decimale che viene trasformata.DECIMAL_COLUMN_2
: la seconda colonna decimale inclusa nell'operazione, ad esempio quando aggiungi i valori di due colonne decimali.
Passaggi successivi
- Scopri di più sulle istruzioni di Wrangler.