Data Engineer
Доклад за логистична компания Вие сте анализатор в логистична компания, която води отчет за операциите в складовете. Трябва да изготвите доклад за ефективността на всеки склад. За всеки склад изчислете: • общия брой операции (count_operations); • общия брой обработени стоки в склада (sum_quantity); • средното време за обработка на операция (avg_processing_time), като се вземат предвид само операциите с посочено време (не NULL), закръглено до най-близкото цяло число; • максималното и минималното количество стоки, обработени в една операция (max_quantity, min_quantity); • броя на операциите от всеки тип («доставка», «изпращане», «прехвърляне») в отделни колони: supply_operations, shipment_operations, transfer_operations. Филтрирайте складовете, при които общият брой операции е повече от 2 и средното време за обработка не надвишава 60 минути. Подредете резултата по ID на склада във възходящ ред. Формат на входа Таблица operations: • operation_id (int) — уникален идентификатор на операцията • warehouse_id (int) — ID на склада • operation_type (text) — тип на операцията: «доставка», «изпращане», «прехвърляне» • quantity (int) — брой единици стока в операцията • operation_date (timestamp) — дата и час на операцията • processing_time (int) — време за обработка на операцията Колоната processing_time може да съдържа NULL стойности. Формат на изхода Заявката трябва да върне таблица с полетата в следния ред: • warehouse_id (int) — уникален ID на склада • count_operations (int) — общ брой операции, извършени в склада • sum_quantity (int) — общ брой обработени стоки в склада • avg_processing_time (numeric) — средно време за обработка на операцията (в минути), като се вземат предвид само операции с ненулево време, закръглено до цяло число • max_quantity (int) — максимално количество стоки, обработени в една операция • min_quantity (int) — минимално количество стоки, обработени в една операция • supply_operations (int) — брой операции от тип «доставка» • shipment_operations (int) — брой операции от тип «изпращане» • transfer_operations (int) — брой операции от тип «прехвърляне»
LEFT JOIN: таблица с 10 записи LEFT JOIN таблица с 100 записа. Какво е минималното и максималното количество редове, които могат да се получат?
[име] попита: Кои колони трябва да са Nullable и как да го оформя в DDL?
Напишете прост DAG за Apache Airflow
Запознат ли си с OLAP кубове? Когато работим с многомерни данни, подобни на сводна таблица в Excel, но за по-бързо взаимодействие с големи обеми данни.
Работили ли сте с инкрементални и пълни зареждания? Как се справяхте с дублиращите се записи?
Как да избегнете едновременния старт на около 700 DAG изпълнения при catchup/backfill в Airflow?
Разкажи ми за Greenplum — формати за съхранение на данни, редово и колоново съхранение.
Какво е статистика в контекста на системите за управление на бази данни и оптимизация на заявки?
Кои таблицени двигатели в ClickHouse знаете и сте използвали?
По кои полета си разпределил данните в Greenplum?
Имал ли си опит с Docker образи, настройване на среда на виртуална машина?
Разкажи ми за предишния си проект, какви бяха задълженията ти?
Разкажи ми, какво обичаш да правиш в свободното си време освен програмиране? Какви са хобитата ти?
Когато строеше пайплайни в Airflow, как решаваше проблема с junk data (мусорни/невалидни данни)?
Как работи JOIN в ClickHouse?
Каква е разликата между ROWS BETWEEN и RANGE BETWEEN?
Каква е алгоритмичната сложност при търсене в речник в най-лошия случай?
Джобове от dbt в Airflow — писахте ги ръчно или автоматизирахте по някакъв начин, имаше ли шаблони?
Какви видове дистрибуция сте използвали? Как избрахте ключа за дистрибуция?