2017-08-09 4 views
1

J'avais utilisé le paramètre nullEscape dans la requête U-SQL. Il a remplacé le \ N par une chaîne de longueur nulle. Y at-il un moyen de transformer \ N en "\ N" en utilisant la requête U-SQL.La valeur NULL dans U-SQL remplace la chaîne de longueur nulle en donnant nullEscape Paramètre

Valeur1, (chaîne de longueur nulle), valeur2, valeur3, (chaîne de longueur nulle), (chaîne de longueur nulle)

J'ai aussi un doute je veux \ N et n'ont pas besoin de changer \ N pour une chaîne de longueur nulle dans l'extracteur tout en omettant les valeurs nulles comme \ N?

I have tried the following but it didn't worked, 
USING Extractors.Csv(nullEscape:"\N"); 

Exemple CSV des données:

Nom ,,, "", adresse, Pin

\ N a déjà été remplacé par chaîne de longueur zéro.

Répondre

1

Vous pouvez utiliser une expression conditionnelle pour convertir les valeurs, par exemple

DECLARE @path string = "input/input81.csv"; 

@data = 
    EXTRACT 
     a string, 
     b string, 
     c string, 
     d string, 
     e string, 
     f string 
    FROM @path 
    USING 
     Extractors.Csv(); 


// Convert string \N to zero-length string for selected columns 
@output = 
    SELECT a, 
      b == "\\N"? "" : b AS b, 
      c, 
      d == "\\N"? "" : d AS d, 
      e == "\\N"? "" : d AS e 
    FROM @data; 


OUTPUT @output 
TO "output.csv" 
USING Outputters.Csv(quoting : true, outputHeader: true); 

Mon fichier d'entrée est here et ceux-ci étaient mes résultats:

U-SQL results

+0

Ou si vous utilisez nullEscape comme paramètre sur l'extracteur et vous obtenez null, vous pouvez utiliser cette expression'col == null? "": col' dans la clause select. –