Поделиться через


тип OBJECT

Область применения: флажок Databricks Runtime 15.3 и более поздних версий

Представляет значения в VARIANT со структурой, описанной набором полей.

См. инструкции STRUCT по хранению и обработке структурированных типов, описанных последовательностью полей.

Внимание

Нельзя OBJECT хранить в столбце таблицы. Он предоставляется только при вызове schema_of_variant или schema_of_variant_agg. Чтобы использовать OBJECT тип, необходимо привести его к структуре или MAP.

Синтаксис

OBJECT < [fieldName [:] fieldType [, ...] ] >
  • fieldName: идентификатор, обозначающий имя поля. Имена должны быть уникальными.
  • fieldType: любой тип данных.

Ограничения

Этот тип поддерживает любое число полей, от 0 и более.

Литералы

OBJECT Значения не могут быть созданы за пределами VARIANT. Они являются результатом анализа строки JSON в VARIANT использование функции parse_json().

Примечания.

Примеры

> 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"}