Cette page explique comment convertir des champs en décimaux et effectuer des transformations dessus lorsque vous préparez des données dans l'espace de travail Wrangler de Cloud Data Fusion Studio.
Lire des données décimales
- Accédez à l'espace de travail Wrangler dans Cloud Data Fusion.
Ouvrez un objet, tel qu'une table, à partir d'une base de données ou d'un fichier Cloud Storage.
- Pour une base de données ou une connexion BigQuery, si la table comporte une colonne décimale, Wrangler la convertit en type
BigDecimal
. Lorsque vous créez le pipeline à partir de Wrangler, la colonne est ensuite convertie en type de donnéesdecimal
. Si votre ensemble de données contient des données non décimales que vous souhaitez convertir en décimales, utilisez la directive
set-column
:set-column : DECIMAL_COLUMN exp:{new("java.math.BigDecimal", INPUT_COLUMN)}
Remplacez les éléments suivants :
DECIMAL_COLUMN
: colonne décimale à transformer. Une fois la directive exécutée, le type de données de la colonne passe àBigDecimal
, et le schéma contient également le type de données approprié.INPUT_COLUMN
: colonne convertie, qui peut être l'un des types suivants:STRING
,INTEGER
,LONG
,FLOAT
ouDOUBLE
.
Si votre ensemble de données inclut des valeurs à échelle variable, telles que 1,05, 2,698 et 5,8745512, définissez l'échelle avec une directive Wrangler et modifiez le schéma dans le pipeline pour définir l'échelle de la colonne décimale.
Pour définir l'échelle dans Wrangler, utilisez une directive semblable à la suivante:
set-column : OUTPUT_COLUMN exp:{new("java.math.BigDecimal", DECIMAL_COLUMN).setScale()}
L'exemple suivant convertit une colonne appelée
cost
d'une chaîne en décimal, définit une échelle de 9 et affiche les résultats dans une nouvelle colonne appeléeoutput-column
:set-column : output-column exp:{new("java.math.BigDecimal", "cost").setScale(9)}
- Pour une base de données ou une connexion BigQuery, si la table comporte une colonne décimale, Wrangler la convertit en type
Transformer des données décimales
Les colonnes décimales de Wrangler utilisent la classe Java BigDecimal.
Une fois les colonnes converties au type de données BigDecimal, transformez-les à l'aide des méthodes de Class BigDecimal
.
Transformation | Directive |
---|---|
Obtenir la valeur absolue | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.abs() |
Obtenir la précision d'une valeur décimale | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.precision() |
Obtenir l'échelle d'une valeur décimale | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.scale() |
Obtenir la valeur non étalonnée d'une valeur décimale | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.unscaledValue() |
Ajouter deux colonnes décimales | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.add(DECIMAL_COLUMN_2) |
Soustraire un nombre décimal d'un autre | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.subtract(DECIMAL_COLUMN_2) |
Multiplier un nombre décimal par un autre | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.multiply(DECIMAL_COLUMN_2) |
Diviser une colonne décimale par une autre et renvoyer le quotient | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.divide(DECIMAL_COLUMN_2) |
Diviser une colonne décimale par une autre et renvoyer le reste | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.remainder(DECIMAL_COLUMN_2) |
Convertir un nombre décimal en entier | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.intValue() |
Convertir un nombre décimal en long | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.longValue() |
Convertir un nombre décimal en valeur flottante | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.floatValue() |
Convertir un nombre décimal en double | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.doubleValue() |
Vérifier si une valeur décimale est égale à une autre | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.equals(DECIMAL_COLUMN_2) |
Trouver la valeur maximale de deux colonnes décimales | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.max(DECIMAL_COLUMN_2) |
Trouver la valeur minimale de deux colonnes décimales | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.min(DECIMAL_COLUMN_2) |
Déplacer la virgule de n chiffres vers la gauche | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointLeft(n) |
Déplacer la virgule de n chiffres vers la droite | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.movePointRight(n) |
Obtenir la puissance nième d'un nombre décimal | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.pow(n) |
Négliger un nombre décimal | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.negate() |
Supprimer les zéros à la fin d'un nombre décimal | set-column : OUTPUT_COLUMN DECIMAL_COLUMN.stripTrailingZeros() |
Remplacez les éléments suivants :
OUTPUT_COLUMN
: colonne contenant la sortie de l'opération.DECIMAL_COLUMN
: colonne décimale transformée.DECIMAL_COLUMN_2
: deuxième colonne décimale incluse dans l'opération, par exemple lorsque vous additionnez les valeurs de deux colonnes décimales.
Étape suivante
- En savoir plus sur les directives Wrangler