Data Engineer
Čo by ste chceli robiť v našom tíme?
Čo sú mŕtve riadky v databáze?
Potrebujeme engine pipeline — mechanizmus, ktorý umožní veľmi rýchle vytváranie tokov zadávaním kontraktov a parametrov. Ako by si to realizoval na vyššej úrovni?
Aké sú typy fyzických spojení (metódy spojovania)?
Aké spôsoby existujú na odstránenie údajov v ClickHouse?
Akými operátormi ste používali Airflow? Ako ste komunikovali s dbt cez Airflow?
Aký je zmysel rozdeľovania dát na bloky v HDFS?
Čo sa týka dotazu, môžeme vidieť, čo sa deje s údajmi, vrátane akých typov joinov — aké typy joinov tam môžeme vidieť?
Dodržiava sa ACID v Greenplum?
Analýza aktivity používateľov v reklamných kampaniach Spoločnosť vedie evidenciu udalostí súvisiacich s reklamnými kampaňami. Vstupné tabuľky sú: • campaigns — zoznam reklamných kampaní s ich identifikátormi a názvami; • events — udalosti používateľov podľa kampaní s informáciami o type udalosti (napríklad 'click' (klik na reklamu)) a čase. Je potrebné vytvoriť správu pre každú reklamnú kampaň s nasledujúcimi ukazovateľmi: • Celkový počet udalostí. • Počet jedinečných používateľov, ktorí vykonali udalosti. • Čas prvého a posledného udalosti podľa kampane. • Poradie kampane podľa zostupného počtu celkových udalostí. Riadok — číslo, ktoré sa priraďuje každej riadku v výslednom súbore na základe zadaného poradia údajov. Ak majú dve alebo viac riadkov rovnakú hodnotu, dostanú rovnaké poradie, ale nasledujúce poradie sa preskočí. Do správy sa zahrnú iba kampane, ktoré mali udalosti: kampane bez udalostí sa nezohľadňujú. Konečný prehľad by mal byť najskôr zoradený podľa poradia kampane vzostupne, a potom podľa campaign_name v abecednom poradí. Formát vstupu • campaign_name (string) — názov reklamnej kampane • start_date (timestamp) — dátum a čas začiatku reklamnej kampane • end_date (timestamp) — dátum a čas ukončenia reklamnej kampane Tabuľka events: • event_id (int) — jedinečný identifikátor udalosti • user_id (int) — jedinečný identifikátor používateľa, ktorý vykonal udalosť • campaign_id (int) — jedinečný identifikátor reklamnej kampane • event_type (string) — typ udalosti, napríklad 'click' (klik na reklamu) alebo 'conversion' (konverzia — úspešná akcia, napríklad nákup) • event_time (timestamp) — dátum a čas vykonania udalosti Dáta neobsahujú medzery alebo nesprávne hodnoty. Formát výstupu Dopyt by mal vrátiť tabuľku s poľami v takom poradí: • campaign_name (string) — názov reklamnej kampane • total_events (int) — celkový počet udalostí súvisiacich s kampaňou • unique_users (int) — počet jedinečných používateľov, ktorí vykonali udalosti • first_event_time (timestamp) — dátum a čas prvého udalosti kampane • last_event_time (timestamp) — dátum a čas posledného udalosti kampane • campaign_rank (int) — poradie kampane podľa zostupného počtu celkových udalostí Dáta zoradiť podľa poradia kampane podľa vzostupu, a potom podľa campaign_name v abecednom poradí.
Aký je rozdiel medzi generátormi a zoznamami v Pythone?
Prečo nasledujúci dopyt nebude používať index, ak v tabuľke records (id) je vytvorený bežný B-strom index na id? select * from records where id % 2 = 0 - Pre id je potrebný index typu GIN - Indexy nepracujú s výrazmi v WHERE - % je operácia porovnania, nie filtrovania - limit a offset sú povinné pre optimalizáciu s indexom - Dopyt odkazuje na číselné pole, nie na textové pole
Urobte seznam dragih rezervacij Vprašanje Kako lahko ustvarite seznam rezervacij na dan [telefon], ki bodo stali člana (ali gosta) več kot 30 $? Ne pozabite, da imajo gostje različne stroške od članov (navedeni stroški so na polurno 'mesto'), in uporabniški gost je vedno ID 0. Vključite v izhod ime objekta, ime člana oblikovano kot eno stolpec in strošek. Razporedite po padajoči ceni in ne uporabljajte podpoizvedb.
-- Pôvodná tabuľka stretch -- Je potrebné doplniť NULL hodnoty predchádzajúcou (ne NULL) hodnotou podľa id - vykonať doplnenie nadol 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 dotaz pro získání požadované tabulky SELECT id, ttime, COALESCE(val, LAST_VALUE(val) OVER(PARTITION BY id ORDER BY ttime)) as val FROM stretch
Zadaný reťazec obsahuje nuly a jednotky. Je potrebné napísať funkciu func(), ktorá vráti maximálny počet po sebe idúcich jednotiek. Napríklad: func("010111011") -> 3
Iceberg je motor, ktorý umožňuje spraviť z S3 databázu, dokonca dodržiava ACID. Aký je jeho mínus?
Aké druhy fyzického spojenia tabuliek existujú (Hash Join, Merge Join, Nested Loop)?
Ako si pozrieť plán vykonávania dotazu v Oracle? Čo sa líši od EXPLAIN PLAN do EXPLAIN ANALYZE?
Ako vidíte svoj podiel na projekte s ohľadom na popísaný zloženie tímu?
Aké fyzické JOIN-y poznáš?