Partager via


Fonction from_json

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

Retourne une valeur de struct avec jsonStr et schema.

Syntaxe

from_json(jsonStr, schema [, options])

Arguments

  • jsonStrSTRING: expression spécifiant un document json.
  • schema: expression STRING ou appel de schema_of_json fonction.
  • options : un MAP<STRING,STRING> littéral optionnel spécifiant les directives.

jsonStr doit être bien formé en ce qui concerne schema et options.

schema doit être défini comme des noms de colonnes séparés par des virgules et des paires de types de données, similaires au format utilisé dans CREATE TABLE. Avant Databricks Runtime 12.2, schema doit être un littéral.

Remarque

Les noms de colonne et de champ respectent schema la casse et doivent correspondre exactement aux jsonStr noms. Pour mapper les champs JSON qui diffèrent uniquement dans le cas, vous pouvez convertir le struct résultant en noms de champs distincts. Pour plus d’informations, consultez Exemples .

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

  • primitivesAsString (par défaut false) : infère toutes les valeurs primitives sous le 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.
  • allowComments (par défaut false) : ignore le commentaire de style Java et C++ dans les enregistrements JSON.
  • allowUnquotedFieldNames (par défaut false) : autorise les noms de champs JSON sans guillemets.
  • allowSingleQuotes (par défaut true) : autorise les guillemets simples en plus des guillemets doubles.
  • allowNumericLeadingZeros (par défaut false) : autorise les zéros de début dans les nombres (par exemple 00012).
  • allowBackslashEscapingAnyCharacter (par défaut false) : autorise l’acceptation des guillemets pour tous les caractères à l’aide d’un mécanisme de barre oblique inverse.
  • allowUnquotedControlChars (par défaut false) : permet aux chaînes JSON de contenir des caractères de contrôle sans guillemets (caractères ASCII dont la valeur est inférieure à 32, y compris tabulation et saut de ligne).
  • 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.
  • 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.
  • multiLine (par défaut false) : analyse un enregistrement, qui peut s’étendre sur plusieurs lignes, par fichier.
  • encoding (par défaut non défini) : permet de définir de force l’un des encodages de base ou étendus standard pour les fichiers JSON, par exemple UTF-16BE ou UTF-32LE. Si l’encodage n’est pas spécifié et que multiLine a la valeur true, il est détecté automatiquement.
  • 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.
  • samplingRatio (par défaut 1.0) : définit la fraction des objets JSON d’entrée utilisés pour l’inférence de schéma.
  • dropFieldIfAllNull (par défaut false) : indique s’il faut ignorer la colonne de toutes les valeurs Null ou un tableau/struct vide pendant l’inférence de schéma.
  • locale (par défaut en-US) : sets des paramètres régionaux comme balise de langue au format IETF BCP 47, par exemple pour l’analyse des dates et des horodatages.
  • allowNonNumericNumbers (par défaut true) : permet à l’analyseur JSON de reconnaître le jeu de jetons NaN (Not a Number) comme valeurs de nombres flottants autorisées :
    • +INF pour l’infini positif, alias de +Infinity et de Infinity.
    • -INF pour l’infini négatif, alias de -Infinity.
    • NaN pour les autres valeurs NAN, comme le résultat de la division par zéro.
  • readerCaseSensitive(default : true) spécifie le comportement de sensibilité à la casse lorsque l'option rescuedDataColumn est activée. Si la valeur est true, sauver les colonnes de données du schéma dont les noms diffèrent au niveau de la casse. Sinon, lire les données sans respect de la casse. Disponible dans Databricks SQL et Databricks Runtime 13.3 LTS et versions ultérieures.

Retours

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

Exemples

> SELECT from_json('{"a":1, "b":0.8}', 'a INT, b DOUBLE');
{"a":1,"b":0.8}

-- The column name must to match the case of the JSON field
> SELECT from_json('{"a":1}', 'A INT');
{"A":null}

> SELECT from_json('{"datetime":"26/08/2015"}', 'datetime Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
{"datetime":2015-08-26 00:00:00}

-- Disambiguate field names with different cases
> SELECT cast(from_json('{"a":1, "A":0.8}', 'a INT, A DOUBLE') AS STRUCT<a: INT, b: DOUBLE>);
 {"a":1, "b":0.8}