Fonction from_json
S’applique à : Databricks SQL Databricks Runtime
Retourne une valeur de struct avec jsonStr
et schema
.
Syntaxe
from_json(jsonStr, schema [, options])
Arguments
jsonStr
STRING
: expression spécifiant un document json.schema
: expressionSTRING
ou appel de schema_of_json fonction.options
: unMAP<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éfautfalse
) : infère toutes les valeurs primitives sous le type chaîne.prefersDecimal
(par défautfalse
) : 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éfautfalse
) : ignore le commentaire de style Java et C++ dans les enregistrements JSON.allowUnquotedFieldNames
(par défautfalse
) : autorise les noms de champs JSON sans guillemets.allowSingleQuotes
(par défauttrue
) : autorise les guillemets simples en plus des guillemets doubles.allowNumericLeadingZeros
(par défautfalse
) : autorise les zéros de début dans les nombres (par exemple00012
).allowBackslashEscapingAnyCharacter
(par défautfalse
) : autorise l’acceptation des guillemets pour tous les caractères à l’aide d’un mécanisme de barre oblique inverse.allowUnquotedControlChars
(par défautfalse
) : 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éfautPERMISSIVE
) : 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é parcolumnNameOfCorruptRecord
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 champcolumnNameOfCorruptRecord
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 dansspark.sql.columnNameOfCorruptRecord
) : permet de renommer le nouveau champ qui possède une chaîne malformée créée par le modePERMISSIVE
. Remplacespark.sql.columnNameOfCorruptRecord
.dateFormat
(par défautyyyy-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éfautyyyy-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éfautfalse
) : 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 quemultiLine
a la valeurtrue
, 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éfautfalse
) : 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éfauten-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éfauttrue
) : permet à l’analyseur JSON de reconnaître le jeu de jetonsNaN
(Not a Number) comme valeurs de nombres flottants autorisées :+INF
pour l’infini positif, alias de+Infinity
et deInfinity
.-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'optionrescuedDataColumn
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}