Data Engineer
HDFSте маалыматтарды блокторго бөлүүнүн мааниси эмнеде?
Суроо боюнча, биз маалыматтар менен эмне болуп жатканын көрө алабыз, кайсы түрдөгү кошулмалар — кайсы түрдөгү кошулмаларды биз ошол жерден көрө алабыз?
Колдонуучулардын активдүүлүгүн талдоо жарнамалык кампанияларда Компания жарнамалык кампаниялар менен байланышкан окуяларды эсепке алат. Кирүү таблицалары: • campaigns — жарнамалык кампаниялардын тизмеси, алардын идентификаторлору жана аталыштары менен; • events — кампаниялар боюнча колдонуучулардын окуялары, окуянын түрү (мисалы, 'click' (жарнамага басуу)) жана убактысы тууралуу маалыматтар. Ар бир жарнамалык кампания үчүн төмөндөгүлөр менен отчет түзүү керек: • Бардык окуялардын саны. • Окуяларды жасаган уникалдуу колдонуучулардын саны. • Кампания боюнча биринчи жана акыркы окуянын убактысы. • Жалпы окуялардын саны боюнча кампаниянын рангин төмөндөтүү менен. Ранг — берилген маалыматтардын тартиби боюнча ар бир сапка берилүүчү сан. Эгер эки же андан көп сап бирдей мааниге ээ болсо, алар бирдей ранг алат, бирок кийинки ранг өткөрүлүп кетет. Тек окуялары болгон кампаниялар гана отчетко киргизилет: окуялары жок кампаниялар эсепке алынбайт. Жыйынтык отчет биринчи ранг боюнча өсүүчү тартипте, андан соң campaign_name боюнча алфавиттик тартипте сорттолуучу. Кирүү форматы • campaign_name (string) — жарнамалык кампаниянын аты • start_date (timestamp) — жарнамалык кампаниянын башталыш убактысы • end_date (timestamp) — аяктоо убактысы Окуялар таблицасы: • event_id (int) — окуянын уникалдуу идентификатору • user_id (int) — окуяны жасаган колдонуучунун уникалдуу идентификатору • campaign_id (int) — жарнамалык кампаниянын уникалдуу идентификатору • event_type (string) — окуянын түрү, мисалы 'click' (басуу) же 'conversion' (айлануу — ийгиликтүү аракет, мисалы сатып алуу) • event_time (timestamp) — окуянын жасалган убактысы Маалыматтар бош эмес жана туура эмес маанилерди камтыбайт. Чыгуу форматы Суроо төмөнкүдөй багыттар менен таблицаны кайтаруусу керек: • campaign_name (string) — жарнамалык кампаниянын аты • total_events (int) — кампания менен байланышкан жалпы окуялардын саны • unique_users (int) — уникалдуу колдонуучулардын саны, окуяларды жасаган • first_event_time (timestamp) — биринчи окуянын убактысы • last_event_time (timestamp) — акыркы окуянын убактысы • campaign_rank (int) — жалпы окуялардын саны боюнча кампаниянын рангин төмөндөтүү Маалыматтарды ранг боюнча өсүүчү тартипте, андан соң campaign_name боюнча алфавиттик тартипте сорттолуучу.
ClickHouse'до маалыматтарды жоюунун кандай жолдору бар?
Pythonдеги генераторлор менен тизмелердин айырмасы эмнеде?
Неге кийинки суроо индекс колдонбойт, эгер records таблицасында (id) жөнөкөй B-Tree индекси түзүлгөн болсо? select * from records where id % 2 = 0 - Id үчүн GIN түрү индекси керек - Индекстер WHERE шарттарында колдонулбайт - % салыстыру операциясы, фильтр эмес - limit жана offset индекстин оптимизациясы үчүн милдеттүү - Суроо сандык талаага кайрылат, текст эмес
Кымбат брондоо тизмесин түзүңүз Суроо [телефон] күнүндө мүчө (же конок) үчүн 30 доллардан ашык чыгым кылган брондо тизмесин кантип түзө аласыз? Коноктордун чыгымдары мүчөлөрдөн айырмаланарын унутпаңыз (тизмеге алынган чыгымдар жарым саат 'слот' үчүн), жана конок колдонуучу дайыма ID 0. Чыгышыңызга жайгаштыруу жайынын аты, мүчөнүн аты бир колонка катары жана чыгымды кошуңуз. Төмөндө чыгымдар боюнча төмөндөп сорттоп, субсуроолорду колдонбоңуз.
Биздин командада эмне кылгыңыз келет?
Берилген нөлдөр жана бирлерден турган сап. func() функциясын жазуу керек, ал үзгүлтүксүз бирлердин эң көп санын кайтарат. Мисалы: func("010111011") -> 3
Маалыматтар базасындағы өлгөн саптар эмне?
-- Баштапкы stretch таблицасы -- id боюнча NULL эмес алдынкы маанини толтуруу керек - төмөндө кеңейтүү id | ttime | val ---|-------|----- 1 | 07:30 | NULL 1 | 09:21 | 10 1 | 13:53 | NULL 1 | 16:12 | NULL 2 | 09:42 | 133 2 | 15:20 | NULL 2 | 21:33 | NULL 3 | 08:01 | NULL 3 | 11:41 | 8 3 | 14:23 | NULL 3 | 16:17 | NULL 3 | 19:54 | 2 4 | 13:10 | 312 4 | 14:42 | NULL 4 | 16:31 | 7 4 | 17:44 | NULL id | ttime | val ---|-------|----- 1 | 07:30 | NULL 1 | 09:21 | 10 1 | 13:53 | 10 1 | 16:12 | 10 2 | 09:42 | 133 2 | 15:20 | 133 2 | 21:33 | 133 3 | 08:01 | NULL 3 | 11:41 | 8 3 | 14:23 | 8 3 | 16:17 | 8 3 | 19:54 | 2 4 | 13:10 | 312 4 | 14:42 | 312 4 | 16:31 | 7 4 | 17:44 | 7 -- SQL суроо талапталган таблицаны алуу үчүн SELECT id, ttime, COALESCE(val, LAST_VALUE(val) OVER(PARTITION BY id ORDER BY ttime)) as val FROM stretch
Iceberg — бул S3'тү маалымат базасына айландырууга мүмкүндүк берген кыймылдаткыч, ал even ACIDти сактайт. Анын кемчилиги эмнеде?
Greenplumта ACID сакталабы?
Postgresтин бир нече нодасында суроолорду параллелдөөдө эмне болот?
Oracleда сурак аткаруу планыны кантип көрө алам? EXPLAIN PLAN менен EXPLAIN ANALYZE кандай айырмаланат?
Жол таблицаларын физикалык бириктирүүнүн кандай түрлөрү бар (Hash Join, Merge Join, Nested Loop)?
Кайсы физикалык JOINдерди билесиз?
Python менен канчалык жакшы тааныссыз?
Тасвирланган команда курамы эътиборга алганда, сиз долбоордаги иштирокиңизни кандай көрөсүз?
GIL (Global Interpreter Lock) эмне жана Pythonда кандай иштейт?