Tipo diOBJECT
Si applica a: Databricks Runtime 15.3 e versioni successive
Rappresenta i valori in un valore VARIANT con la struttura descritta da un set di campi.
Fare riferimento a STRUCT per l'archiviazione e l'elaborazione di tipi strutturati descritti da una sequenza di campi.
Importante
Impossibile archiviare l'oggetto OBJECT
in una colonna di tabella.
Viene esposto solo quando si chiama schema_of_variant o schema_of_variant_agg.
Per usare un OBJECT
tipo, è necessario eseguirne il cast in uno STRUCT o MAP.
Sintassi
OBJECT < [fieldName [:] fieldType [, ...] ] >
fieldName
: identificatore che denomina il campo. I nomi devono essere univoci.fieldType
: qualsiasi tipo di dati.
Limiti
Il tipo supporta un numero qualsiasi di campi maggiore o uguale a 0.
Valori letterali
I valori di OBJECT
non possono essere creati all'esterno di un valore VARIANT.
Sono il risultato dell'analisi di una stringa JSON in un VARIANT
usando la funzione parse_json().
Note
- Per estrarre un oggetto
OBJECT
è possibile:- variant_get funzione usando un'espressione di percorso JSON per spostarsi nel
OBJECT
tipo. - : operatore (segno di due punti) per analizzare l'oggetto usando un'espressione
OBJECT
di percorso JSON. - try_variant_get funzione usando un percorso JSON per spostarsi in un
OBJECT
tipo con tolleranza di errore. - Operatore cast function o :: (segno due punti) per eseguire il cast di
OBJECT
a uno STRUCT o MAP. - try_cast funzione o ?:: (segno di tre due punti) per eseguire il cast di
OBJECT
in uno STRUCT o MAP.
- variant_get funzione usando un'espressione di percorso JSON per spostarsi nel
Esempi
> 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"}