Data Engineer
Kā jūs strādājāt ar CI/CD?
Kāda ir atšķirība starp WHERE un HAVING?
Kā jūs redzat savu līdzdalību projektā, ņemot vērā aprakstīto komandas sastāvu?
Kas ir GIL (Global Interpreter Lock) un kā tas darbojas Python?
Lietotāju aktivitātes analīze reklāmas kampaņās Uzņēmums uzskaita notikumus, kas saistīti ar reklāmas kampaņām. Ievades tabulas: • campaigns — reklāmas kampaņu saraksts ar to identifikatoriem un nosaukumiem; • events — lietotāju notikumi pēc kampaņām ar informāciju par notikuma tipu (piemēram, 'click' (klikšķis uz reklāmas)) un laiku. Nepieciešams izveidot pārskatu par katru reklāmas kampaņu ar šādiem rādītājiem: • Kopējais notikumu skaits. • Unikālo lietotāju skaits, kuri veica notikumus. • Kampaņas pirmā un pēdējā notikuma laiks. • Kampaņas ranga pēc kopējā notikumu skaita dilstošā secībā. Rangs — skaitlis, kas piešķirts katrai rindai rezultātu kopā, balstoties uz norādīto datu kārtību. Ja divas vai vairāk rindas ir ar vienādu vērtību, tām piešķir vienādu rangu, bet nākamais rangs tiek izlaists. Tiek iekļautas tikai tās kampaņas, kurām bija notikumi: bez notikumiem esošas kampaņas netiek ņemtas vērā. Galīgais pārskats ir jāsakārto vispirms pēc ranga dilstošā secībā, pēc tam pēc campaign_name alfabētiskā secībā. Ievades formāts • campaign_name (string) — reklāmas kampaņas nosaukums • start_date (timestamp) — kampaņas sākuma datums un laiks • end_date (timestamp) — kampaņas beigu datums un laiks Notikumu tabula: • event_id (int) — unikāls notikuma identifikators • user_id (int) — unikāls lietotāja identifikators, kurš veica notikumu • campaign_id (int) — reklāmas kampaņas unikāls identifikators • event_type (string) — notikuma veids, piemēram, 'click' (klikšķis) vai 'conversion' (konversija — veiksmīga darbība, piemēram, pirkums) • event_time (timestamp) — notikuma veikšanas laiks Dati nesatur tukšas vai nepareizas vērtības. Izvades formāts Vaicājumam jāatgriež tabula ar šādiem laukiem: • campaign_name (string) — reklāmas kampaņas nosaukums • total_events (int) — kopējais notikumu skaits • unique_users (int) — unikālo lietotāju skaits, kuri veica notikumus • first_event_time (timestamp) — pirmā notikuma laiks • last_event_time (timestamp) — pēdējā notikuma laiks • campaign_rank (int) — kampaņas ranga pēc kopējā notikumu skaita dilstošā secībā Datus jāizkārto pēc ranga dilstošā secībā, pēc tam pēc campaign_name alfabētiskā secībā.
Kāpēc sekojošā vaicājuma neizmantos indeksu, ja tabulā records (id) ir izveidots parasts B-Tree indekss pēc id? select * from records where id % 2 = 0 - Id nepieciešams GIN tipa indekss - Indeksi nedarbojas ar izteiksmēm WHERE - % ir salīdzināšanas operācija, ne filtrēšana - limit un offset ir obligāti optimizācijai ar indeksu - Vaicājums piekļūst skaitliskajam laukam, ne teksta laukam
Attiecībā uz vaicājumu mēs varam redzēt, kas notiek ar datiem, tostarp kādiem savienojumu veidiem — kādus savienojumu veidus mēs varam redzēt tur?
-- Sākotnējā stretch tabula -- Ir nepieciešams aizpildīt NULL vērtības ar iepriekšējo (ne NULL) vērtību pēc id - veikt aizpildīšanu uz leju 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 užklausa norimai lentelei gauti SELECT id, ttime, COALESCE(val, LAST_VALUE(val) OVER(PARTITION BY id ORDER BY ttime)) as val FROM stretch
Pastāsti par Airflow izmantošanu: kādus nestandarta elementus tu izmantoji
Kura no zemāk minētajiem apgalvojumiem atspoguļo šādu darbību sekas no paplašinātā Git Flow un izmaiņu vēstures pārvaldības skatpunkta?
Izveido dārgu rezervējumu sarakstu Jautājums Kā jūs varat izveidot [telefona] dienas rezervējumu sarakstu, kas izmaksās dalībniekam (vai viesim) vairāk nekā 30 $? Atcerieties, ka viesiem ir dažādas izmaksas nekā dalībniekiem (uzskaitītās izmaksas ir par pusstundas 'slot'), un viesu lietotājs vienmēr ir ID 0. Iekļaujiet savā izvadē ēkas nosaukumu, dalībnieka vārdu kā vienu kolonnu un izmaksas. Kārtot pēc dilstošas izmaksas un neizmantojiet apakšvaicājumus.
Pastāstiet man par savu darba pieredzi
Kuras inkrementālās ielādes stratēģijas jūs izmantojāt dbt?
Uzrakstiet vienkāršu DAG Apache Airflow
Kādus JOIN veidus pazīsti? Izskaidro 2-3 galvenos.
Vai 4 cilvēku komandā bija kāds līderis vai kāds cits vadīja to?
Mikroservisu arhitektūras projektēšanas uzdevums: kā nodrošināt datus pasūtījumu tabulai (preces, cenas, pasūtījumi), ja ir trīs atsevišķi mikroservisi?
Kas ir dinamiskā tipizācija?
Kādus JOIN tipus zināt? (loģiski)
Kādus fiziskos JOIN-us pazīstat?