Data Engineer
Kādi veidi ir pieejami datu dzēšanai ClickHouse?
Mums nepieciešams pipeline dzinējs — mehānisms, kas ļauj ļoti ātri veidot plūsmas, ievadot līgumus un parametrus. Kā tu to realizētu augstākā līmenī?
Kā darbojas sadalīšana Hive un kā tā ir fiziski attēlota failu sistēmā?
Pastāsti par sevi — darba pieredze, tehnoloģiju steks
Kāda ir datu sadalīšanas blokos HDFS jēga?
Kas ir mirušās rindas datu bāzē?
Kādi Airflow operatorus jūs izmantojāt? Kā jūs sadarbojāties ar dbt caur Airflow?
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
Iceberg ir dzinējs, kas ļauj S3 pārvērst datu bāzē, tas pat ievēro ACID. Kāds ir tā trūkums?
Vai Greenplum ievēro ACID?
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ā atšķiras generatori no sarakstiem Python?
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
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.
Dotas ir nullešu virkne. Nepieciešams uzrakstīt funkciju func(), kas atgriezīs maksimālo pēc kārtas esošo vienību skaitu. Piemēram: func("010111011") -> 3
Kādi fiziskās savienošanas veidi pastāv (Hash Join, Merge Join, Nested Loop)?
Uzrakstiet vienkāršu DAG Apache Airflow
Vai jums ir pieredze darbā ar bibliotēku Langchain? Kādas uzdevumus jūs risinājāt ar tās palīdzību?
Kā skatīt vaicājuma izpildes plānu Oracle? Kā atšķiras EXPLAIN PLAN no EXPLAIN ANALYZE?