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
: expression STRING spécifiant un document JSON.schema
: expression STRING ou appel de la fonction schema_of_json.options
: littéral MAP<STRING,STRING> facultatif spécifiant des directives.
jsonStr
doit être bien formé 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
. Avant Databricks Runtime 12.2, schema
doit être un littéral.
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');
{1,0.8}
> SELECT from_json('{"time":"26/08/2015"}', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
{2015-08-26 00:00:00}