Fonction from_xml

S’applique à : coche marquée oui Databricks SQL case marquée oui Databricks Runtime 14.1 et versions ultérieures

Important

Cette fonctionnalité est disponible en préversion publique.

Renvoie une valeur de structure analysée à partir de xmlStr en utilisant schema.

Syntaxe

from_xml(xmlStr, schema [, options])

Arguments

  • xmlStr : une expression STRING spécifiant un enregistrement XML unique
  • schema : une STRING expression ou une invocation de la fonction schema_of_xml.
  • options : un MAP<STRING,STRING> littéral optionnel spécifiant les directives.

Retours

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

xmlStr doit être bien formé en ce qui concerne schema et options. Si xmlStr ne peut pas être analysé NULL est retourné.

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 :

  • excludeAttribute (false par défaut) : Indique s’il faut exclure des attributs dans les éléments.
  • mode (par défaut PERMISSIVE) : autorise un mode de traitement des enregistrements endommagés pendant l’analyse.
    • 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 corrompus, vous pouvez 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. Lors de l’inférence d’un schéma, un champ columnNameOfCorruptRecord est ajouté implicitement dans un schéma de sortie.
    • 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.
  • inferSchema (true par défaut) : si true, tente de déduire un type approprié pour chaque attribut résultant, comme un type booléen, numérique ou de date. Si false la valeur est, toutes les colonnes résultantes sont de type chaîne.
  • prefersDecimal (par défaut false) : infère toutes les valeurs à virgule flottante sous le type décimal. Si les valeurs ne tiennent pas sous forme décimale, elles sont inférées sous le type double.
  • attributePrefix (_ par défaut) : le préfixe des attributs pour les différencier des éléments. Il s’agira du préfixe pour les noms de champs. Il peut s'agir d'une chaîne vide.
  • valueTag (_VALUE par défaut) : la balise utilisée pour les données caractères dans les éléments qui ont également des éléments d’attributs ou d’éléments enfants.
  • encoding (UTF-8 par défaut) : décode les fichiers XML selon le type d’encodage spécifié.
  • ignoreSurroundingSpaces (true par défaut) : définit si les espaces entourant les valeurs lues doivent être ignorés.
  • rowValidationXSDPath : chemin d’accès à un fichier XSD utilisé pour valider le code XML de chaque ligne individuellement. Les lignes qui ne peuvent pas être validées sont traitées comme des erreurs d’analyse comme indiqué ci-dessus. Le XSD n’affecte pas le schéma fourni ou inféré.
  • ignoreNamespace ( falsepar défaut) : si true, les préfixes d’espaces de noms sur les éléments et attributs XML sont ignorés. Les balises <abc:author> et <def:author> seraient, par exemple, traitées comme si les deux sont simplement <author>. Notez que les espaces de noms ne peuvent pas être ignorés sur l’élément rowTag, uniquement ses enfants. Notez que l’analyse XML n’est généralement pas consciente de l’espace de noms, même si la valeur est false.
  • 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.
  • timestampNTZFormat (yyyy-MM-dd'T'HH:mm:ss[.SSS] par défaut) : définit la chaîne qui indique un horodatage sans format de fuseau horaire. Les formats de date personnalisés suivent les formats des modèles Datetime. Cela s’applique au type TimestampNTZType.
  • 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.
  • locale (en-US par défaut) : 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.
  • nullValue (null par défaut) : définit la représentation sous forme de chaîne de caractères d’une valeur nulle.

Exemples

> SELECT from_xml('<p><a>1</a><b>0.8</b></p>', 'a INT, b DOUBLE');
 {"a":1,"b":0.8}

> SELECT from_xml('<p><time>26/08/2015</time></p>', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
 { "time": "2015-08-26T00:00:00.000+0000"}

> SELECT from_xml('<p><teacher>Alice</teacher><student><name>Bob</name><rank>1</rank></student><student><name>Charlie</name><rank>2</rank></student></p>',
                  'STRUCT<teacher: STRING, student: ARRAY<STRUCT<name: STRING, rank: INT>>>');
 {"teacher":"Alice","student":[{"name":"Bob","rank":1},{"name":"Charlie","rank":2}]}