Опциональные (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 от отсутствия ключа.