Агрегатні та віконні функції

Функції, доступні в трансформаціях Групування (Агрегація) та Віконні функції.

Агрегатні функції

Використовуються в трансформації Групування для підсумовування груп рядків.

Функція Опис
count Кількість рядків у групі
sum Сума числових значень
mean Середнє (арифметичне)
median Медіана (50-й перцентиль)
min Найменше значення
max Найбільше значення
distinct Кількість унікальних значень
stdev Стандартне відхилення
first Перше значення в групі
last Останнє значення в групі

Приклад

Групування за Region, агрегація Sales з sum:

Region  | sum_Sales
--------|---------
North   | 45000
South   | 32000

Віконні функції

Використовуються в трансформації Віконні функції. Додають обчислювані стовпці на основі позиції рядка без зменшення кількості рядків.

Ранжування

Функція Опис Приклад виводу
row_number Послідовна нумерація 1, 2, 3, 4, 5
rank Ранг з пропусками для однакових 1, 2, 2, 4, 5
dense_rank Ранг без пропусків 1, 2, 2, 3, 4
percent_rank Відсотковий ранг (від 0 до 1) 0, 0.25, 0.5, 0.75, 1
ntile Розподіл на N рівних груп 1, 1, 2, 2, 3

Зміщення

Функція Опис
lag Значення з N рядків перед поточним
lead Значення з N рядків після поточного
first_value Перше значення в розділі
last_value Останнє значення в розділі

Заповнення

Функція Опис
fill_down Замінює null найближчим не-null значенням зверху
fill_up Замінює null найближчим не-null значенням знизу

Приклад віконної функції

Сортування за Date, додавання lag(Sales, 1):

Date       | Sales | lag_Sales
-----------|-------|----------
2024-01-01 | 100   | null
2024-01-02 | 150   | 100
2024-01-03 | 120   | 150

Поради

  • Order By обов'язковий для коректних результатів — визначає послідовність рядків
  • Partition By перезапускає вікно для кожної групи (як GROUP BY, але без згортання рядків)
  • Lag/Lead приймають зміщення (за замовчуванням 1) та необов'язкове значення за замовчуванням для крайніх рядків
  • N-Tile розподіляє рядки на вказану кількість рівних груп