TGViewer
дата инженеретта дата инженеретта @data_engineerette · 3.43K subscribers
Post #550 2.81K
max_by/min_by

Узнала про прикольные функции, они заменяют оконку/CTE на одно поле

Пример - вывести имя сотрудника с максимальным стажем по каждому департаменту


result = df.groupBy("department").agg(
F.max_by("name", "years")
)


И все! Не надо никаких row_number = 1

В Spark SQL можно еще и фильтр набросить:


spark.sql("""
select
department,
max_by(name, years) filter (where name is not null)
from employees
group by department
""")


А в Trino еще можно собрать массив топ-n в убывающем порядке:


select
department,
max_by(name, years) AS top_employee,
max_by(name, years, 2) AS top_2_employees
from employees
group by department


Аналог в ClickHouse - argMax

@data_engineerette
  • 👍 38
  • 🔥 14
  • ❤ 3
More from @data_engineerette
  1. Sep 24, 2026Исследование data-people Тут ребята из DevCrowd запустили ежегодное исследование специалис…
  2. Sep 22, 20265 октября начнется 19-й поток программы Data Engineer от Newprolab Программа для junior- и…
  3. Sep 15, 2026Каким должен быть хороший DE? Меня однажды спросили на собесе: 🤩Какие 3 качества важны дл…
  4. Sep 12, 2026Mermaid-диаграммы Наконец-то дошли руки поковыряться в mermaid-диаграммах, это что за имба…
  5. Sep 2, 2026Iceberg — это внезапный бум или планомерная подготовка? Заметили, как с определенного моме…
  6. Aug 25, 2026Как забытый ON CLUSTER поставил меня в тупик Я создала таблицу ReplicatedReplacingMergeTre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →