Data Engineer
JOIN түрлері және олардың айырмашылықтары
Кесте 'clients' (client_id, толық аты, басталу күні, аяқталу күні) және 'transactions' (transaction_id, client_id, күн, сома) берілген. 2025 жылдың 1 мамырында әр клиенттің транзакция сомасын есептейтін SQL сұрауын жазыңыз және client_id, толық аты және соманы шығарыңыз.
Жобаңызда docs/ каталогында орналасқан құжаттама үшін субмодуль пайдаланылады. Бұл субмодульдің қашықтағы репозиторийінде (мысалы, release тармағында) маңызды жаңартулар пайда болғанын білдіңіз. Бұл өзгерісті соңғы нұсқаға жаңарту және оны commit-ке дайындау үшін қандай команда қолданасыз?
Деректер қазір қалай өңделеді? Егер олар әртүрлі форматта болса, олар қалай нормалданады және бір формаға келтіріледі?
Дерекқор схемасын әдетте қалай жасайтын едің — тікелей дерекқорда қолмен бе, әлде сценарийлерді қайда сақтайтын едің, немесе мүлде Liquibase-те отырдың ба, қандай процесс болды?
Join орындаудың қандай физикалық стратегияларын білесіз?
Транзакциялар кестесі мен күнтізбе кестесін қосқанда қай физикалық механизм JOIN қолданылатын болады (бұл шарт бойынша: күн <= күн)?
Ішкі цикл қосылу қалай жұмыс істейді және оның алгоритмдік күрделілігі қандай? Басқа үш алгоритмнің күрделілігі қандай?
Airflow DAG-тан басқа Python-да не жаздың?
уақыт белдеуімен уақыт белгісі
Транзакция оқшаулау деңгейлері деген ұғым бар. Бұл туралы не білесіз?
find_mode функциясы [1, 2, 3, 3, 4, 5] тізімі үшін не қайтарады? Қадам-қадам түсіндір.
Бірлік тестілерін жаздыңыз ба? Мұндай тәжірибеңіз бар ма?
Бізде тапсырыстар саны бойынша ORDER BY бар, екі тапсырыс 5-ке, тағы екі тапсырыс 3-ке тең. RANK() және DENSE_RANK() қалай әрекет етеді?
Құжаттама жазу тәжірибеңіз бар ма?
Greenplum-та кәдімгі MySQL және басқа диалектілерде жоқ қандай функциялар мен мүмкіндіктер бар?
Деректер витриндарын есептеу үшін деректер құбырларын құру бойынша сіздің тәжірибеңіз бен түсінігіңіз қандай?
Топ үшін процестерді немесе құралдарды жақсартқан мысал келтіре аласыз ба?
ClickHouse-тың Distributed қозғалтқышының қандай параметрлерімен таныссыз?
2021 жылы «Киім» санатында және 2022 жылы «Табыс» санатында тапсырыстар мен «қажетті санаттағы тауарлар» санын шығарыңыз (жалпы түрі: 2 жол. Аралықтар: жыл, тауарлар саны, тапсырыстар саны) with cte as( select year(o.order_date) as year_orders, g.cat_1, count(distinct o.order_id) as count_orders, sum(g.quantity) as count_quan from Orders o join Goods g on o.order_id = g.order_id where (g.cat_1 = 'Киім' and Year(o.order_date) = 2021) or (g.cat_1 = 'Табыс' and Year(o.order_date) = 2022) group by year_orders, g.cat_1 ) select year_orders, count_quan, count_orders from cte 2025 жылы әр санаттағы ең көп сатылымдар бойынша топ-3 модельдер with cte as( select cat_1, price, quantity, model, rank() over(partition by cat_1) as rk from Orders o join Goods g on o.order_id = g.order_id where Year(o.order_date) = 2025 ) 2025 жылы әр санаттағы сатылымдардың сомасы бойынша топ-3 модельдер with cte as( select g.cat_1, g.model, (price * quantity), rank() over(partition by cat_1) as rk from Orders o join Goods g on o.order_id = g.order_id where Year(o.order_date) = 2025 ) with cte as( select g.cat_1, g.model, sum(price * quantity) as sum_, rank() over(partition by g.cat_1 order by sum() desc) as rk from Orders o join Goods g on o.order_id = g.order_id where Year(o.order_date) = 2025 ) with cte1 as( select g.cat_1, g.model, sum(price * quantity) as sum_total, from Orders o join Goods g on o.order_id = g.order_id where Year(o.order_date) = 2025 ), cte2 as(select g.cat_1, g.model, sum_total, rank() over(partition by g.cat_1 order sum_total desc) as rk from cte1 ) select g.cat_1, g.model, sum_total from cte2 where rk <=3 with cte1 as( select g.cat_1 as cat_name, g.model as model, sum(price * quantity) as sum_total, from Orders o join Goods g on o.order_id = g.order_id where Year(o.order_date) = 2025 group by Year(o.order_date), g.model ), cte2 as(select cat_name, model, sum_total, rank() over(partition by cat_name order sum_total desc) as rk from cte1 ) select cat_name, model, sum_total from cte2 where rk <=3