Перейти к содержимому
Последнее обновление

EXPLODE_SPLIT_OUTER

Описание​

Табличная функция explode_split_outer используется для разделения строки на несколько подстрок по указанному разделителю и вывода каждой подстроки в отдельной строке. Её следует использовать вместе с LATERAL VIEW для преобразования вложенных структур данных в стандартный формат плоской таблицы. Основное различие между explode_split_outer и explode_split заключается в обработке значений NULL.

Синтаксис​

EXPLODE_SPLIT_OUTER(<str>, <delimiter>)

Параметры​

  • <str>: тип String, строка для разделения.
  • <delimiter>: тип String, разделитель.

Возвращаемое значение​

  • Возвращает столбец из полученных при разделении подстрок. Тип столбца: String.

Примечания по использованию​

  1. Если <str> имеет значение NULL, возвращается 1 строка со значением NULL.
  2. Если <str> представляет собой пустую строку ("") или не поддаётся разделению, возвращается 1 строка.
  3. Если <delimiter> имеет значение NULL, возвращается 1 строка со значением NULL.
  4. Если <delimiter> представляет собой пустую строку (""), <str> разделяется по байтам (SPLIT_BY_STRING).

Примеры​

  1. Подготовка данных
    create table example(
    k1 int
    ) properties(
    "replication_num" = "1"
    );

    insert into example values(1);
  2. Обычные параметры
    select  * from example lateral view explode_split_outer("ab,cd,ef", ",") t2 as c;
    +------+------+
    | k1 | c |
    +------+------+
    | 1 | ab |
    | 1 | cd |
    | 1 | ef |
    +------+------+
  3. Пустая строка и случаи, когда разделение невозможно
    select  * from example lateral view explode_split_outer("", ",") t2 as c;
    +------+------+
    | k1 | c |
    +------+------+
    | 1 | |
    +------+------+
    select  * from example lateral view explode_split_outer("abc", ",") t2 as c;
    +------+------+
    | k1 | c |
    +------+------+
    | 1 | abc |
    +------+------+
  4. Параметр NULL
    select  * from example lateral view explode_split_outer(NULL, ',') t2 as c;
    +------+------+
    | k1 | c |
    +------+------+
    | 1 | NULL |
    +------+------+
  5. Пустой разделитель
    select  * from example lateral view explode_split_outer('abc', '') t2 as c;
    +------+------+
    | k1 | c |
    +------+------+
    | 1 | a |
    | 1 | b |
    | 1 | c |
    +------+------+
  6. Разделитель равен NULL
    select  * from example lateral view explode_split_outer('abc', null) t2 as c;
    +------+------+
    | k1 | c |
    +------+------+
    | 1 | NULL |
    +------+------+