Tipo deOBJECT
Se aplica a: Databricks Runtime 15.3 y versiones posteriores
Representa los valores en una VARIANT con la estructura descrita por un conjunto de campos.
Consulte STRUCT para almacenar y procesar tipos estructurados descritos por una secuencia de campos.
Importante
El OBJECT
no se puede almacenar en una columna de tabla.
Solo se expone al llamar a schema_of_variant o schema_of_variant_agg.
Para usar un tipo de OBJECT
, debe convertirlo en un STRUCT o MAP.
Sintaxis
OBJECT < [fieldName [:] fieldType [, ...] ] >
fieldName
: identificador que designa el campo. Los nombres deben ser únicos.fieldType
: cualquier tipo de datos.
Límites
El tipo admite cualquier número de campos mayor o igual que 0.
Literales
Los valores de OBJECT
no se pueden crear fuera de un VARIANT.
Son el resultado de analizar una cadena JSON en un VARIANT
mediante la función parse_json().
Notas
- Para extraer un
OBJECT
puede hacer lo siguiente:- variant_get función mediante una expresión de ruta de acceso JSON para navegar al tipo de
OBJECT
. - : operador (signo de dos puntos) para analizar el
OBJECT
mediante una expresión de ruta de acceso JSON. - try_variant_get función mediante una ruta de acceso JSON para navegar a un tipo de
OBJECT
con tolerancia a errores. - función de conversión o :: (signo de dos puntos) para convertir el
OBJECT
en un STRUCT o MAP. - try_cast función o operador ?:: (signo de punto triple) para convertir el
OBJECT
en un STRUCT o MAP.
- variant_get función mediante una expresión de ruta de acceso JSON para navegar al tipo de
Ejemplos
> 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"}