OBJECT
type
Van toepassing op: Databricks Runtime 15.3 en hoger
Vertegenwoordigt waarden in een VARIANT met de structuur die wordt beschreven door een set velden.
Raadpleeg STRUCT voor het opslaan en verwerken van gestructureerde typen die worden beschreven door een reeks velden.
Belangrijk
De OBJECT
kolom kan niet worden opgeslagen in een tabelkolom.
Deze wordt alleen weergegeven wanneer u schema_of_variant of schema_of_variant_agg aanroept.
Als u een OBJECT
type wilt gebruiken, moet u het casten naar een STRUCT of MAP.
Syntaxis
OBJECT < [fieldName [:] fieldType [, ...] ] >
-
fieldName
: Een identificator die het veld een naam geeft. De namen moeten uniek zijn. -
fieldType
: elk gegevenstype.
Limieten
Het type ondersteunt een willekeurig aantal velden groter of gelijk aan 0.
Letterlijke waarden
Waarden van OBJECT
kunnen niet buiten een VARIANT worden gemaakt.
Ze zijn het resultaat van het parseren van een JSON-tekenreeks in een VARIANT
met behulp van de functie parse_json().
Opmerkingen
- Om een
OBJECT
te extraheren, kunt u:-
variant_get functie met behulp van een JSON-padexpressie om naar het
OBJECT
type te navigeren. -
: (dubbele puntteken) operator om de
OBJECT
te parseren met een JSON-padexpressie. -
try_variant_get functie met een JSON-pad om te navigeren in een
OBJECT
type, met tolerantie voor fouten. -
cast-functie of :: (dubbele puntteken) om de
OBJECT
om te zetten naar een STRUCT of MAP. -
try_cast functie of ?:: (driedubbele dubbele punt) operator om de
OBJECT
naar een STRUCT of MAP te casten.
-
variant_get functie met behulp van een JSON-padexpressie om naar het
Voorbeelden
> 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"}