Fonction from_json

Retourne une valeur de struct avec jsonStr et schema .

Syntaxe

from_json(jsonStr, schema [, options])

Arguments

  • jsonStr: Expression de chaîne spécifiant une ligne de données CSV.
  • schema: Un littéral de chaîne ou un appel de schema_of_json fonction.
  • options: Mappage facultatif<chaîne, chaîne> littéral spécifiant des directives.

Retours

Struct avec des noms de champs et des types correspondant à la définition de schéma.

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

options, s’il est fourni, peut être l’un des éléments suivants :

  • primitivesAsString (valeur par défaut false ) : déduit toutes les valeurs primitives en tant que type chaîne.
  • prefersDecimal (par défaut false ) : déduit toutes les valeurs à virgule flottante en tant que type décimal. Si les valeurs ne tiennent pas dans la virgule décimale, elles sont déduites de double.
  • allowComments (valeur 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 non significatifs dans les nombres (par exemple, 00012 ).
  • allowBackslashEscapingAnyCharacter (par défaut false ) : autorise l’acceptation des guillemets de tous les caractères à l’aide d’une 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 les caractères de saut de ligne et de tabulation).
  • mode (par défaut PERMISSIVE ) : autorise un mode à traiter les enregistrements endommagés pendant l’analyse.
    • PERMISSIVE: lorsqu’il rencontre un enregistrement endommagé, place la chaîne incorrecte dans un champ configuré par columnNameOfCorruptRecord et définit des champs incorrects 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 un schéma n’a pas de champ, il supprime les enregistrements endommagés au cours de l’analyse. Lors de la déduction d’un schéma, il ajoute implicitement un columnNameOfCorruptRecord champ dans un schéma de sortie.
    • FAILFAST: lève une exception lorsqu’il est conforme aux enregistrements endommagés.
  • columnNameOfCorruptRecord (la valeur par défaut est la valeur spécifiée dans spark.sql.columnNameOfCorruptRecord ) : permet de renommer le nouveau champ avec une chaîne incorrecte créée par le PERMISSIVE mode. Ce remplace spark.sql.columnNameOfCorruptRecord .
  • dateFormat (valeur par défaut yyyy-MM-dd ) : définit la chaîne qui indique un format de date. les formats de date personnalisés obéissent aux formats Databricks SQL datetime patterns. Cela s’applique au type date.
  • timestampFormat (valeur 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 obéissent aux formats Databricks SQL datetime patterns. Cela s’applique au type d’horodatage.
  • multiLine (valeur par défaut false ) : analyse un enregistrement, qui peut s’étendre sur plusieurs lignes, par fichier.
  • encoding (par défaut, il n’est pas 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, UTF-32LE. Si l’encodage n’est pas spécifié et que multiLine a la valeur true , il est détecté automatiquement.
  • lineSep (la valeur par défaut couvre tout \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 (valeur 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 (la valeur par défaut est en-US ) : sets paramètres régionaux en tant que balise de langue au format IETF BCP 47. Par exemple, il est utilisé lors de l’analyse des dates et des horodateurs.
  • allowNonNumericNumbers (valeur par défaut true ) : permet à l’analyseur JSON de reconnaître le jeu de jetons not-a-Number ( NaN ) comme valeurs de nombre à virgule flottante autorisées :
    • +INF pour l’infini positif, ainsi que l’alias de +Infinity et Infinity .
    • -INF pour l’infini négatif), alias -Infinity .
    • NaN pour les autres valeurs non-a, comme le résultat de la division par zéro.

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}