Fonction from_csv

S’applique à : case marquée oui Databricks SQL case marquée oui Databricks Runtime

Retourne une valeur de struct avec csvStr et schema.

Syntaxe

from_csv(csvStr, schema [, options])

Arguments

  • csvStr : expression de type STRING spécifiant une ligne de données CSV.
  • schema : littéral STRING ou appel de la fonction schema_of_csv.
  • options : littéral MAP<STRING,STRING> facultatif spécifiant des directives.

Retours

Struct dont le nom et le type des champs correspondent à la définition de schéma.

csvStr doit être bien formée en ce qui concerne schema et options. schema doit être défini en tant que paires nom de colonne-type de données séparées par des virgules, comme dans CREATE TABLE.

options, s’il est indiqué, peut correspondre aux éléments suivants :

  • sep (, par défaut) : définit un séparateur pour chaque champ et valeur. Ce séparateur peut être un ou plusieurs caractères.
  • encoding (UTF-8 par défaut) : décode les fichiers CSV selon le type d’encodage spécifié.
  • quote (" par défaut) : définit un caractère unique utilisé pour l’échappement des valeurs entre guillemets où le séparateur peut faire partie de la valeur. Si vous souhaitez désactiver les guillemets, vous devez définir non pas Null, mais une chaîne vide. Ce comportement est différent de celui de com.databricks.spark.csv.
  • escape (\ par défaut) : définit un caractère unique utilisé pour l’échappement des guillemets à l’intérieur d’une valeur déjà placée entre guillemets.
  • charToEscapeQuoteEscaping (escape ou \0 par défaut) : définit un caractère unique utilisé pour l’échappement du caractère de guillemet. La valeur par défaut est un caractère d’échappement quand les caractères escape et quote sont différents ; \0 sinon.
  • comment (chaîne vide par défaut) : définit un caractère unique utilisé pour sauter les lignes commençant par ce caractère. Elle est désactivée par défaut.
  • header (false par défaut) : utilise la première ligne comme noms de colonnes.
  • enforceSchema (true par défaut) : si la valeur est true, le schéma spécifié ou inféré est appliqué de force aux fichiers de source de donnée, et les en-têtes des fichiers CSV sont ignorés. Si l’option est définie sur false, le schéma est validé par rapport à tous les en-têtes des fichiers CSV dans le cas où l’option d’en-tête est définie sur true. Les noms de champs dans le schéma et les noms de colonnes dans les en-têtes CSV sont vérifiés par leur position en tenant compte spark.sql.caseSensitive. Bien que la valeur par défaut soit true, il est recommandé de désactiver l’option enforceSchema pour éviter des résultats incorrects.
  • inferSchema (false par défaut) : déduit automatiquement le schéma d’entrée à partir des données. Cela nécessite un passage supplémentaire sur les données.
  • samplingRatio (1.0 par défaut) : définit la fraction de lignes utilisée pour inférer le schéma.
  • ignoreLeadingWhiteSpace (false par défaut) : indicateur qui spécifie si les espaces blancs de début des valeurs lues doivent être ignorés.
  • ignoreTrailingWhiteSpace (false par défaut) : indicateur qui spécifie si les espaces blancs de fin des valeurs lues doivent être ignorés.
  • nullValue (chaîne vide par défaut) : définit la représentation sous forme de chaîne d’une valeur Null.
  • emptyValue (chaîne vide par défaut) : définit la représentation sous forme de chaîne d’une valeur vide.
  • nanValue (NaN par défaut) : définit la représentation sous forme de chaîne d’une valeur non numérique.
  • positiveInf (Inf par défaut) : définit la représentation sous forme de chaîne d’une valeur infinie positive.
  • negativeInf (-Inf) par défaut) : définit la représentation sous forme de chaîne d’une valeur infinie négative.
  • dateFormat (par défaut yyyy-MM-dd) : définit la chaîne qui indique un format de date. Les formats de date personnalisés suivent les formats des modèles Datetime. S’applique au type date.
  • timestampFormat (par défaut yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]) : définit la chaîne qui indique un format d’horodatage. Les formats de date personnalisés suivent les formats des modèles Datetime. S’applique au type timestamp.
  • maxColumns (20480 par défaut) : définit une limite inconditionnelle du nombre de colonnes qu’un enregistrement peut avoir.
  • maxCharsPerColumn (-1 par défaut) : définit le nombre maximal de caractères autorisés pour toute valeur spécifiée en cours de lecture. Par défaut, il s’agit de -1, ce qui signifie une longueur illimitée.
  • unescapedQuoteHandling (STOP_AT_DELIMITER par défaut) : définit la manière dont l’analyseur CSV traite les valeurs avec des guillemets sans séquence d’échappement.
    • STOP_AT_CLOSING_QUOTE : Si l’entrée contient des guillemets sans séquence d’échappement, accumuler le caractère de guillemet et poursuivre l’analyse de la valeur comme une valeur entre guillemets, jusqu’à ce qu’un guillemet fermant soit trouvé.
    • BACK_TO_DELIMITER : Si l’entrée contient des guillemets sans séquence d’échappement, la valeur est considérée comme une valeur sans guillemets. L’analyseur accumule tous les caractères de la valeur analysée actuelle jusqu’à trouver le délimiteur. Si la valeur ne contient aucun délimiteur, l’analyseur continue à accumuler les caractères de l’entrée jusqu’à trouver un délimiteur ou une fin de ligne.
    • STOP_AT_DELIMITER : Si l’entrée contient des guillemets sans séquence d’échappement, la valeur est considérée comme une valeur sans guillemets. L’analyseur accumule tous les caractères jusqu’à trouver le délimiteur ou une ligne de fin dans l’entrée.
    • STOP_AT_DELIMITER : si l’entrée contient des guillemets sans séquence d’échappement, le contenu analysé pour la valeur spécifiée est ignoré et la valeur définie dans nullValue est générée à la place.
    • RAISE_ERROR : si l’entrée contient des guillemets sans séquence d’échappement, une exception TextParsingException est levée.
  • mode (par défaut PERMISSIVE) : autorise un mode de traitement des enregistrements endommagés pendant l’analyse. Il prend en charge les modes suivants qui ne respectent pas la casse. Spark tente d’analyser uniquement les colonnes requises dans le fichier CSV dans le cadre du nettoyage des colonnes. Ainsi, les enregistrements endommagés peuvent être différents en fonction de l’ensemble de champs requis. Ce comportement peut être contrôlé par spark.sql.csv.parser.columnPruning.enabled (activé par défaut).
    • PERMISSIVE : en présence d’un enregistrement endommagé, place la chaîne malformée dans un champ configuré par columnNameOfCorruptRecord et définit les champs malformés sur Null. Pour conserver les enregistrements endommagés, un utilisateur peut définir un champ de type chaîne nommé columnNameOfCorruptRecord dans un schéma défini par l’utilisateur. Si le schéma est dépourvu de ce champ, les enregistrements endommagés sont supprimés au cours de l’analyse. Un enregistrement avec moins ou plus de jetons que le schéma n’est pas un enregistrement endommagé pour CSV. Quand il rencontre un enregistrement ayant moins de jetons que la longueur du schéma, définit Null sur des champs supplémentaires. Quand l’enregistrement contient plus de jetons que la longueur du schéma, les jetons supplémentaires sont supprimés.
    • FAILFAST : lève une exception en présence d’enregistrements endommagés.
  • columnNameOfCorruptRecord (par défaut la valeur spécifiée dans spark.sql.columnNameOfCorruptRecord) : permet de renommer le nouveau champ qui possède une chaîne malformée créée par le mode PERMISSIVE. Remplace spark.sql.columnNameOfCorruptRecord.
  • multiLine (false par défaut) : analyse un enregistrement, qui peut s’étendre sur plusieurs lignes.
  • locale (par défaut en-US) : définit des paramètres régionaux comme étiquette de langue au format IETF BCP 47, par exemple pour l’analyse des dates et des horodatages.
  • lineSep (par défaut couvre à la fois \r, \r\n et \n) : définit le séparateur de ligne qui doit être utilisé pour l’analyse. La longueur maximale est d’un caractère.
  • pathGlobFilter : modèle Glob facultatif permettant d’inclure uniquement les fichiers dont le chemin correspond au modèle. La syntaxe suit celle de org.apache.hadoop.fs.GlobFilter. Il ne modifie pas le comportement de la découverte des partitions.

Exemples

> SELECT from_csv('1, 0.8', 'a INT, b DOUBLE');
 {1,0.8}
> SELECT from_csv('26/08/2015', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
 {"time":2015-08-26 00:00:00}