TypeOBJECT
S’applique à : Databricks Runtime 15.3 et versions ultérieures
Représente des valeurs dans un VARIANT avec la structure décrite par un ensemble de champs.
Pour le stockage et le traitement des types structurés décrits par une séquence de champs, consultez STRUCT.
Important
OBJECT
ne peut pas être stocké dans une colonne de table.
Il n’est exposé que lors de l’appel de schema_of_variant ou schema_of_variant_agg.
Pour utiliser un type OBJECT
, vous devez le caster en STRUCT ou MAP.
Syntaxe
OBJECT < [fieldName [:] fieldType [, ...] ] >
fieldName
: identificateur qui nomme le champ. Les noms doivent être uniques.fieldType
: n’importe quel type de données.
Limites
Le type prend en charge un nombre quelconque de champs supérieur ou égal à 0.
Littéraux
Les valeurs de OBJECT
ne peuvent pas être créées en dehors d’un VARIANT.
Elles sont le résultat de l’analyse d’une chaîne JSON en un VARIANT
à l’aide de la fonction parse_json().
Notes
- Pour extraire un
OBJECT
, vous pouvez utiliser :- la fonction variant_get à l’aide d’une expression de chemin JSON pour accéder au type
OBJECT
. - l’opérateur : (signe deux-points) pour analyser le
OBJECT
à l’aide d’une expression de chemin JSON. - la fonction try_variant_get à l’aide d’un chemin JSON pour accéder à un type
OBJECT
avec tolérance d’erreur. - la fonction cast ou l’opérateur :: (deux signes deux-points) pour caster le
OBJECT
en un STRUCT ou MAP. - la fonction try_cast ou l’opérateur ?:: (trois signes deux-points) pour caster le
OBJECT
en un STRUCT ou MAP.
- la fonction variant_get à l’aide d’une expression de chemin JSON pour accéder au type
Exemples
> SELECT schema_of_variant(parse_json('{"key": 123, "data": 5.1 }'));
OBJECT<data: DECIMAL(2,1), key: BIGINT>
-- Casting from a an OBJECT to a STRUCT is by name, because OBJECT fields are not ordered.
> SELECT CAST(parse_json('{"key": 123, "data": 5.1 }') AS STRUCT<data: DECIMAL(2,1), key: BIGINT>);
{"data":5.1,"key":123}
> SELECT CAST(parse_json('{"key": 123, "data": 5.1 }') AS STRUCT<key: BIGINT, data: DECIMAL(2,1)>);
{"key":123, "data":5.1}
> SELECT CAST(parse_json('{"key": 123, "data": 5.1 }') AS MAP<STRING, DECIMAL(20, 1)>);
{"data":"5.1","key":"123.0"}