Вступ до функцій вбудованого вулика
Функції побудовані для виконання різних аналітичних вимог і таких операцій, як математичні, логічні, арифметичні та реляційні, на величезних наборах даних і таблицях. Функції використовуються, коли нам доведеться повторно використовувати подібні операції кілька разів. У цьому просунутому світі BigData обробляти та обробляти величезні набори даних, писати програми MapReduce стає важко. Так, мова Hive Query Language (HQL) була введена поверх Apache Hadoop в жовтні 2010 року, за допомогою якої ми можемо легко запускати запити, схожі на SQL. Далі HQL внутрішньо перетворюються на програми Mapreduce для отримання результатів. У цій темі ми розглянемо функції вбудованих вуликів.
Функції вулика в основному класифікуються на дві:
- Вбудовані функції
- Функції, визначені користувачем
Вбудовані функції вулика
Вбудовані функції заздалегідь визначені та легко доступні для використання у вулику. Вони класифіковані нижче:
1. Строкові функції
Використовується для струнних маніпуляцій та перетворень.
Назва функції | Тип повернення | Опис | Приклад |
substr (рядок, int, int) | Рядок | Він повертає рядок із заданого початкового положення до заданої довжини | substr ("Запит на вулик", 5, 5) призводить до "запиту" |
rtrim (рядок X) | Рядок | Він повертає рядок без провідних проміжків | rtrim ('Hello') призводить до "Hello" |
ltrim (рядок X) | Рядок | Він повертає рядок без лівих провідних пробілів | ltrim ("Привіт") призводить до "Hello" |
реверс (рядок X) | Рядок | Він повертає зворотний рядок X | reverse ('hello') призводить до 'olleh' |
rpad (рядок X, int, рядок) | Рядок | Він повертає праву колодку з "pad" на довжину | rpad ("Привіт", 3, "привіт") результати в "Привіт, привіт, привіт" |
lpad (рядок X, int, рядок) | Рядок | Він повертає ліву прокладену рядок з "pad" на довжину | lpad ("Привіт", 3, "Привіт") результати в "Привіт Привіт Привіт Привіт" |
спліт (рядок X, погладжування рядків) | Масив | Він повертає масив рядків після розбиття рядка навколо заданого шаблону | розкол ("A, B, C, D", ", ") призводить до ("A", B ", " C ", " D ") |
довжина (рядок X) | Цілий | Він повертає довжину рядка X | довжина ("Bigdata") призводить до 7 |
concat (рядок X, рядок Y) | Рядок | Він повертає об'єднаний рядок як X, так і Y | concat ('Hello', 'World') призводить до 'HelloWorld' |
2. Математичні функції
Застосовується для застосування математичних операцій, таких як округлення, стеля, підлога тощо замість створення UDF.
Назва функції | Тип повернення | Опис | Приклад |
круглий (подвійний X) | Подвійний | Він повертає округлене значення X | раунд (29.5) призводить до 30 |
круглий (подвійний X, Int d) | Подвійний | Він повертає округлене значення X до d десяткових знаків | раунд (29.3456, 2) призводить до 29, 34 |
стеля (подвійний X) | Подвійний | Він повертає мінімальне значення BIGINT, яке дорівнює або більше X | стеля (20.5555) призводить до 21 |
підлога (подвійний X) | Подвійний | Він повертає максимальне значення BIGINT, яке дорівнює або більше X | стеля (20.5555) призводить до 20 |
rand () | Подвійний | Він повертає випадкові числа від 0 до 9 | rand () результати в rand (0-9) |
abs (подвійний X) | Подвійний | Він повертає абсолютне значення числа X | abs (-25) призводить до 25 |
порох (подвійний X, подвійний Y) | Подвійний | Він повертає значення X, підняте до потужності Y | порошок (2, 3) призводить до 8 |
exp (подвійний X) | Подвійний | Він повертає значення показника X | exp (2) призводить до 7, 389 |
3. Умовні функції
Використовується для перевірки виразу на True чи False та повертає відповідні результати.
Назва функції | Тип повернення | Опис | Приклад |
isnull (X) | Булева | Він повертає TRUE, якщо X NULL else false | isnull ('NULL') повертається в TRUE |
isnotnull (X) | Булева | Він повертає TRUE, якщо X не NULL, а інше false | isnotnull ('NULL') повертається у FALSE |
nvl (арг. X, арг. Y) | Рядок | Він повертає arg Y, якщо arg X - NULL, то повертає arg X | nvl ('NULL', 'Value is Null') призводить до 'Value is Null' |
if (булева перевіркаCondition, T valueTrue, T valueFalseOrNull) | Т | Він повертає True, коли умова тесту є істинним, а False або Null в іншому випадку | if (2 = 2, 'True', 'False') |
злиття (X, Y) | (Будь-який) | Він повертає перші ненульові значення зі списку (У мене є сумніви в цьому - поверне це перше значення або всі ненулі значення?) | coalesce (null, null, null, 1, 5, null, null, 6) призводить до 1 |
4. Функції дати
Використовується для здійснення маніпуляцій з датою та перетворень типів дати.
Назва функції | Тип повернення | Опис | Приклад |
Поточна дата | Дата | Він повертає поточну дату виконання запиту | current_date () повертає сьогоднішню дату |
unix_timestamp () | BigInt | Він повертає поточну часову позначку unix виконання запиту за секунди | unix_timestamp () повертає поточну часову марку unix |
рік (рядова дата) | Int | Він повертає частину дати в рік | рік ('1994-11-24') повертає 1994 рік |
чверть (рядова дата) | Int | Він повертає чверть року дати | квартал ('1994-11-24') повертає 4 |
місяць (рядова дата) | Int | Він повертає місячну частину дати | місяць ('1994-11-24') повертає 11 |
година (рядова дата) | Int | Він повертає часову частину часової позначки | година ('1994-11-24 12:45:23') повертається 12 |
хвилина (рядова дата) | Int | Він повертає хвилинну частину позначки часу | рік ('1994-11-24 12:45:23') повертає 45 |
to_date () | Рядок | Він повертає частину дати в рядку часової позначки | to_date () повертає частину дати |
date_sub (рядок дата, int днів) | Рядок | Він повертає віднімання кількості днів до дати | date_sub ('1994-11-24', 20) повертається '1994-11-04' |
Місяць_поміж (дата1, дата2) | Подвійний | Він повертає кількість місяців між датою1 та датою2 (місяців чи ні днів?) | Місяць між ('1994-11-24', '1994-11-04') повертається 20 |
5. Функція колекції
Використовується для перетворення та отримання частин типів колекцій, таких як карта, масив тощо.
Назва функції | Тип повернення | Опис | Приклад |
розмір (карта) | Int | Він повертає загальну кількість елементів на карті | size (('a': 2, 'b': 6)) повертає 2 |
розмір (масив) | Int | Він повертає загальну кількість елементів у масиві | розмір ((1, 3, 4, 7)) повертає 4 |
array_contains (масив, значення) | Булева | Він повертає true, якщо масив містить значення | array_contains ((1, 3, 9, 8, 5, 4, 7), 5) повертає TRUE |
map_keys (карта) | Масив | Він повертає не упорядкований масив ключів карти | map_keys (('a': 2, 'b': 6, 'c': 1)) return ('b', 'c', 'a') |
map_valuess (карта) | Масив | Він повертає не упорядкований масив значень карти | map_keys (('a': 2, 'b': 6, 'c': 1)) повертає (1, 6, 2) |
sort_array (масив) | Масив | Він повертає відсортований масив даного масиву | sort_array ((1, 3, 9, 8, 5, 4, 7)) повертає (1, 3, 4, 5, 7, 8, 9) |
Висновок
Поки ми обговорювали різні вбудовані функції у вулику. У порівнянні з MapReduce, вулик є більш зручним та економієм часу. Кожен, хто має базові знання SQL, може легко писати HQL, а не складні програми MapReduce для обробки даних.
Рекомендовані статті
Це посібник з функцій вбудованих вуликів. Тут ми обговорюємо вбудовані функції, які заздалегідь визначені та легко доступні для використання у вулику. Ви також можете переглянути наступну статтю, щоб дізнатися більше -
- Функції рядків вулика
- Функція вулика
- Команди вуликів
- Архітектура вуликів
- Замовлення вуликів за
- Установка вулика
- Вбудовані функції Python