Data Engineer
Mit szeretnél csinálni a csapatunkban?
Mi azok a halott sorok az adatbázisban?
Szükségünk van egy pipeline motorra — egy mechanizmusra, amely lehetővé teszi nagyon gyors folyamatok létrehozását szerződések és paraméterek bemenetével. Hogyan valósítanád ezt magasabb szinten?
Milyen fizikai kapcsolatok (összekapcsolási módszerek) léteznek?
Milyen módszerek léteznek az adatok törlésére a ClickHouse-ban?
Milyen Airflow operátorokat használtál? Hogyan léptél kapcsolatba a dbt-vel az Airflow segítségével?
Mi az értelme az adatok blokkokra bontásának az HDFS-ben?
A lekérdezés szempontjából megnézhetjük, mi történik az adatokkal, beleértve, hogy milyen típusú joinokat — milyen típusú joinokat láthatunk ott?
Érvényesül az ACID a Greenplum-ban?
Hirdetési kampányok felhasználói aktivitásának elemzése A vállalat nyilvántartást vezet a hirdetési kampányokkal kapcsolatos eseményekről. Két táblát biztosítanak: • campaigns — a hirdetési kampányok listája azonosítóikkal és neveikkel; • events — felhasználói események kampányonként, az esemény típusával (pl. 'click' (kattintás)) és időpontjával. Szükséges minden kampányhoz jelentést készíteni a következő mutatókkal: • Események összes száma. • Az eseményeket végrehajtó egyedi felhasználók száma. • Az első és utolsó esemény időpontja kampányonként. • A kampány rangsorolása a teljes eseményszám szerint csökkenő sorrendben. A rangsor egy szám, amelyet minden sorhoz hozzárendelnek az eredményhalmazban az adatok sorrendje alapján. Ha két vagy több sor azonos értéket tartalmaz, ugyanazt a rangot kapják, de a következő rang kihagyásra kerül. Csak azok a kampányok szerepeljenek a jelentésben, amelyeknek volt eseményük: a kampányok esemény nélkül nem kerülnek figyelembevételre. A végső jelentést először a kampány rangsora szerint növekvő sorrendben kell rendezni, majd a campaign_name szerint ábécé sorrendben. Bemeneti formátum • campaign_name (string) — a hirdetési kampány neve • start_date (timestamp) — a kampány kezdő dátuma és ideje • end_date (timestamp) — a kampány befejező dátuma és ideje Események táblázat: • event_id (int) — az esemény egyedi azonosítója • user_id (int) — az eseményt végrehajtó felhasználó egyedi azonosítója • campaign_id (int) — a kampány egyedi azonosítója • event_type (string) — az esemény típusa, pl. 'click' vagy 'conversion' • event_time (timestamp) — az esemény dátuma és időpontja Az adatok nem tartalmaznak hiányzó vagy hibás értékeket. Kimeneti formátum A lekérdezésnek egy olyan táblát kell visszaadnia, amely a következő mezőket tartalmazza ebben a sorrendben: • campaign_name (string) — a hirdetési kampány neve • total_events (int) — a kampánnyal kapcsolatos összes esemény száma • unique_users (int) — az eseményeket végrehajtó egyedi felhasználók száma • first_event_time (timestamp) — a kampány első eseményének dátuma és időpontja • last_event_time (timestamp) — a kampány utolsó eseményének dátuma és időpontja • campaign_rank (int) — a kampány rangsora a teljes eseményszám szerint csökkenő sorrendben A dataokat a kampány rangsora szerint növekvő sorrendbe, majd a campaign_name szerint ábécé sorrendbe kell rendezni.
Mi a különbség a generátorok és a listák között Pythonban?
Miért nem fogja a következő lekérdezés használni a indexet, ha a records (id) táblában egy normál B-tree index van az id-n? select * from records where id % 2 = 0 - GIN típusú index szükséges az id-hez - Az indexek nem működnek a WHERE kifejezésekkel - % összehasonlítási művelet, nem szűrés - limit és offset kötelező az indexes optimalizáláshoz - A lekérdezés egy numerikus mezőre hivatkozik, nem szövegesre
Egy drága foglalások listájának készítése Kérdés Hogyan készíthetsz egy listát a [telefon] napján lévő foglalásokról, amelyek több mint 30 dollárba kerülnek a tagnak (vagy vendégnek)? Ne feledd, hogy a vendégeknek más költségeik vannak, mint a tagoknak (a felsorolt költségek félórás 'hely' szerint vannak megadva), és a vendég felhasználó mindig az ID 0. Tartalmazza a kimenetben az intézmény nevét, a tag nevét egyetlen oszlopként, és a költséget. Rendezd csökkenő sorrendbe a költség szerint, és ne használj alkérdéseket.
-- Kiindulási stretch táblázat -- Szükséges a NULL értékeket az előző (nem NULL) értékkel kitölteni id szerint - lefelé történő kitöltés 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 lekérdezés a kívánt táblázat eléréséhez SELECT id, ttime, COALESCE(val, LAST_VALUE(val) OVER(PARTITION BY id ORDER BY ttime)) as val FROM stretch
Adott egy nullákból és egyekből álló sorozat. Írjon egy func() nevű függvényt, amely visszaadja a legnagyobb egymást követő egyek számát. Például: func("010111011") -> 3
Az Iceberg egy olyan motor, amely lehetővé teszi az S3 adatbázissá alakítását, még az ACID-et is betartja. Mi a hátránya?
Milyen fizikai összekapcsolási típusok léteznek (Hash Join, Merge Join, Nested Loop)?
Hogyan nézhető meg egy lekérdezés végrehajtási terve Oracle-ben? Miben különbözik az EXPLAIN PLAN az EXPLAIN ANALYZE-től?
Hogyan látod a részvételedet a projektben a leírt csapat összetétele alapján?
Milyen fizikai JOINokat ismersz?