TipoOBJECT
Aplica-se a: Databricks Runtime 15.3 e posterior
Representa valores em um VARIANT com a estrutura descrita por uma sequência de campos.
Consulte STRUCT para armazenar e processar tipos estruturados descritos por uma sequência de campos.
Importante
O OBJECT
não pode ser armazenado em uma coluna de tabela.
Ele só será exposto ao chamar schema_of_variant ou schema_of_variant_agg.
Para usar um tipo OBJECT
, você deve convertê-lo em um STRUCT ou MAP.
Sintaxe
OBJECT < [fieldName [:] fieldType [, ...] ] >
fieldName
: um identificador que nomeia o campo. Os nomes devem ser únicos.fieldType
: qualquer tipo de dados.
Limites
O tipo dá suporte a qualquer número de campos maior ou igual a 0.
Literais
Valores de OBJECT
não podem ser criados fora de um VARIANT.
Eles são o resultado da análise de uma cadeia de caracteres JSON em um VARIANT
usando a função parse_json().
Observações
- Para extrair um
OBJECT
, você pode usar:- Função variant_get usando uma expressão de caminho JSON para navegar até o tipo
OBJECT
. - Operador : (sinal de dois-pontos) para analisar o
OBJECT
usando uma expressão de caminho JSON. - Função try_variant_get usando um caminho JSON para navegar em um tipo
OBJECT
com tolerância a erros. - Função de conversão ou operador :: (sinal de dois-pontos duplo) para converter o
OBJECT
em um STRUCT ou MAP. - Função try_cast ou operador ?:: (sinal de dois-pontos triplo) para converter o
OBJECT
em um STRUCT ou MAP.
- Função variant_get usando uma expressão de caminho JSON para navegar até o tipo
Exemplos
> 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"}