Data Engineer
Имаме нужда от pipeline engine — механизъм, който ще позволи много бързо създаване на потоци чрез подаване на договори и параметри. Как бихте реализирали това на по-високо ниво?
Какви методи съществуват за изтриване на данни в ClickHouse?
Как работи партиционирането в Hive и как е представено физически във файловата система?
Разкажи за себе си — опит в работата, стек от технологии
Какъв е смисълът от разделянето на данните на блокове в HDFS?
Какво са мъртвите редове в базата данни?
Кои оператори на Airflow използвахте? Как взаимодействахте с dbt чрез Airflow?
Що се отнася до заявката, можем да видим какво се случва с данните, включително какви типове join-ове — какви типове join-ове можем да видим там?
-- Оригиналната таблица stretch -- Необходимо е да попълним NULL стойностите с предишната (не NULL) стойност по id - изпълнение на запълване надолу 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 в база данни, той дори спазва ACID. Какъв е неговият минус?
Спазва ли се ACID в Greenplum?
Анализ на активността на потребителите в рекламните кампании Фирмата води отчет за събития, свързани с рекламните кампании. Предоставени са два таблици: • campaigns — списък на рекламните кампании с техните идентификатори и имена; • events — събития на потребители по кампании с информация за типа на събитието (например 'click' (клик)) и времето. Необходимо е да се създаде отчет за всяка кампания с следните показатели: • Общо количество събития. • Брой уникални потребители, извършили събития. • Време на първото и последното събитие по кампания. • Ранг на кампанията по намаляващ брой на общите събития. Рангът е число, което се присвоява на всеки ред в резултатния набор въз основа на реда на данните. Ако две или повече реда имат еднаква стойност, те получават същия ранг, но следващият ранг се пропуска. Отчетът трябва да включва само кампании, които са имали събития: кампании без събития не се вземат предвид. Финалният отчет трябва да бъде сортиран първо по ранг на кампанията във възходящ ред, а след това по campaign_name в азбучен ред. Формат на входа • campaign_name (string) — името на рекламната кампания • start_date (timestamp) — дата и час на започване на кампанията • end_date (timestamp) — дата и час на приключване на кампанията Таблица events: • 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 в азбучен ред.
Каква е разликата между генератори и списъци в Python?
Защо следният заявка няма да използва индекса, ако в таблицата records (id) е създаден обикновен B-Tree индекс по id? select * from records where id % 2 = 0 - За id е необходим индекс тип GIN - Индексите не работят с изрази в WHERE - % е операция за сравнение, а не филтриране - limit и offset са задължителни за оптимизация с индекс - Заявката се обръща към числово поле, а не към текстово
Създайте списък с скъпи резервации Въпрос Как можете да създадете списък с резервации за деня [телефон], които ще струват на член (или гост) повече от 30 $? Запомнете, че гостите имат различни разходи от членовете (посочените разходи са за половинчасов 'слот'), и потребителят-гост винаги е ID 0. Включете във вашия изход името на съоръжението, името на члена форматирано като една колона и разходите. Подредете по низходяща стойност и не използвайте подзаявки.
Дадена е низ от нули и единици. Трябва да напишете функция func(), която ще върне максималното число на последователни единици. Например: func("010111011") -> 3
Имали ли сте опит с библиотеката Langchain? Какви задачи решавахте с ней?
Какви видове физическо свързване на таблици съществуват (Hash Join, Merge Join, Nested Loop)?
Напишете прост DAG за Apache Airflow
Как да видите плана за изпълнение на заявка в Oracle? Какво е различното между EXPLAIN PLAN и EXPLAIN ANALYZE?