Опциональные (nullable)
Любые типизированные данные в YQL, включая столбцы таблиц, бывают как гарантированно имеющие значение, так и потенциально пустые (что обозначается как NULL
). Такие значения называют «опциональными», или в терминах SQL — «nullable».
Наиболее распространённой операцией для таких типов данных является COALESCE. COALESCE позволяет оставить заполненные значения без изменений, а NULL
заменить на указанное следом значение по умолчанию.
При описании таких типов данных в текстовом виде, они обозначаются с вопросительным знаком на конце (например, String?
) или как Optional<...>
.
Примечание
Optional
(nullable) стоит понимать не как свойство типа данных или колонки, а как один из видов контейнеров, которые могут быть произвольным образом вложены друг в друга. Так, например, столбец с типом Optional<Optional<Boolean>>
может принимать 4 значения — NULL
всего контейнера, NULL
внутреннего контейнера, TRUE
и FALSE
. Описанный тип отличается от List<List<Boolean>>
тем, что роль пустого списка в нем играет NULL
и отсутствует возможность положить больше одного содержательного элемента. Также Optional<Optional<T>>
может использоваться в качестве lookup по ключу в словаре (Dict(k,v)
) c Optional<T>
значениями. Такой тип данных результата позволяет отличать лежащий в словаре NULL
от отсутствия ключа.