Data Engineering 24/25 (МОВС23) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Новая страница: «==О курсе== Занятия проводятся в [ Zoom] '''по ...<день>... в ...<время>...''' Онлайн-курс в дополнение…»)
 
(ДЗ2)
 
(не показано 28 промежуточных версии 3 участников)
Строка 1: Строка 1:
 
==О курсе==
 
==О курсе==
 
+
Занятия проводятся в Zoom '''по вторникам в 19:40 - 21:00'''
Занятия проводятся в [ Zoom] '''по ...<день>... в ...<время>...'''
+
 
+
Онлайн-курс в дополнение к парам: [[ online-course link]]
+
  
 
==Контакты==
 
==Контакты==
  
Канал курса в TG: [[ channel link]]
+
Канал / чат курса в TG: [https://t.me/+zcD5OxdZ2H8wMGQy channel]
  
Чат курса в TG: [[ chat link]]
+
Преподаватель: 1) Сайков Александр 2) Анатолий Бардуков
 
+
Преподаватель:  
+
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Ассистент !! Контакты
+
! Занятие !! Тема !! Дата !! Материалы для самоподготовки к семинарам
 
|-
 
|-
| style="background:#eaecf0;" | ||  
+
| style="background:#eaecf0;" | '''1''' [https://vk.com/video/playlist/-227011779_14?z=video-227011779_456239135%2Fclub227011779%2Fpl_-227011779_14 Запись] || [https://docs.google.com/presentation/d/1m-V4EHdipnWpj3YCvNedPspEYSYQA1kT/edit?usp=sharing&ouid=117622678388551209202&rtpof=true&sd=true Введение инженер данных] || 06.11.2024 ||  
 
|-
 
|-
| style="background:#eaecf0;" | ||  
+
| style="background:#eaecf0;" | '''2''' [https://vk.com/video/playlist/-227011779_14?z=video-227011779_456239144%2Fclub227011779%2Fpl_-227011779_14 Запись] || [https://docs.google.com/presentation/d/11roSjzUdEujxs9C6hqN1SHUV3DkmxLNT/edit?usp=sharing&ouid=117622678388551209202&rtpof=true&sd=true PostgreSQL, Схема данных, Slowly Changing Dimensions] ||12.11.2024 ||
|}
+
 
+
==Материалы курса==
+
Ссылка на плейлист курса на YouTube: [[ YouTube-playlist]]
+
 
+
Ссылка на GitHub с материалами курса: [[ GitHub repository]]
+
 
+
{| class="wikitable"
+
 
|-
 
|-
! Занятие !! Тема !! Дата !! Материалы для самоподготовки к семинарам !! Дополнительные материалы
+
| style="background:#eaecf0;" | '''3''' [https://vkvideo.ru/playlist/-227011779_14/video-227011779_456239179 Запись] || [https://docs.google.com/presentation/d/159P4b7ndBmF-sZbxZKJ9S86wdejxT8ju/edit?usp=sharing&ouid=107809942589012152758&rtpof=true&sd=true Агрегатные функции, SCD] || 23.11.2024 ||
 
|-
 
|-
| style="background:#eaecf0;" | '''1''' [[ Запись]] || [[ Ноутбук]|| ...<date>... || ||  
+
| style="background:#eaecf0;" | '''4''' [https://vkvideo.ru/playlist/-227011779_14/video-227011779_456239188 Запись] || [https://docs.google.com/presentation/d/14NLqIUhzYBWnApkHwyzswH6zVaMSBTF-/edit?usp=sharing&ouid=107809942589012152758&rtpof=true&sd=true Регулярные выражения] || 26.11.2024 ||  
 
|-
 
|-
| style="background:#eaecf0;" | '''2''' [[ Запись]] || [[ Ноутбук]] || ...<date>... || ||  
+
| style="background:#eaecf0;" | '''5''' [https://vkvideo.ru/playlist/-227011779_14/video-227011779_456239209 Запись] || [https://docs.google.com/presentation/d/1unBxoZRdVfco7Jsm886BFm0FXWJqe_mE/edit?usp=sharing&ouid=107809942589012152758&rtpof=true&sd=true Оптимизация запросов и CDC] || 03.12.2024 ||  
 
|-
 
|-
| style="background:#eaecf0;" | '''3''' [[ Запись]] || [[ Ноутбук]] || ...<date>... || ||
+
| style="background:#eaecf0;" | '''6''' [Запись] || Пример ETL процесса || 10.12.2024 ||  
 
|-
 
|-
| style="background:#eaecf0;" | '''4''' [[ Запись]] || [[ Ноутбук]] || ...<date>... || ||
+
| style="background:#eaecf0;" | '''7''' [Запись] || Оптимизация производительности || 17.12.2024 ||  
|-
+
| style="background:#eaecf0;" | '''5''' [[ Запись]] || [[ Ноутбук]] || ...<date>... || ||
+
|-
+
| style="background:#eaecf0;" | '''6''' [[ Запись]] || [[ Ноутбук]] || ...<date>... || ||
+
|-
+
| Конец первого модуля |
+
|-
+
| style="background:#eaecf0;" | '''7''' [[ Запись]] || [[ Ноутбук]] || ...<date>... || ||
+
|-
+
| style="background:#eaecf0;" | '''8''' [[ Запись]] || [[ Ноутбук]] || ...<date>... || ||
+
|-
+
| style="background:#eaecf0;" | '''9''' [[ Запись]] || [[ Ноутбук]] || ...<date>... || ||
+
|-
+
| style="background:#eaecf0;" | '''10''' [[ Запись]] || [[ Ноутбук]] || ...<date>... || ||
+
|-
+
| style="background:#eaecf0;" | '''11''' [[ Запись]] || [[ Ноутбук]] || ...<date>... || ||
+
|-
+
| style="background:#eaecf0;" | '''12''' [[ Запись]] || [[ Ноутбук]] || ...<date>... || ||  
+
 
|-
 
|-
 
|}
 
|}
  
 
=== Записи консультаций ===
 
=== Записи консультаций ===
 
+
(Если они будут)
  
 
==Формула оценивания==
 
==Формула оценивания==
 +
Запланированы 3 дз (2 дз на 1 неделю, проект на 2 недели), тесты к каждой неделе курса
  
Оценка = ...<вес 1>...*О<sub>...<форма контроля 1>...</sub> + ...<вес 2>...*О<sub>...<форма контроля 2>...</sub> + ...<вес 3>...*О<sub>...<форма контроля 3>...</sub>
+
'''Оценка''' = '''0.3'''*проект + '''0.5'''*практические задания + '''0.2'''*тесты
  
 +
'''UPD1:''' начиная со второго домашнего задания, снимаем 1 балл раз в три дня за сдачу после deadline, но ниже 4 не снимаем.
  
 +
'''UPD2:''' начиная с 3 ДЗ снимаем до 1 балла за неаккуратное оформление кода (не следует общеизвестным sql style guides)
 
== Домашние задания ==
 
== Домашние задания ==
#
+
'''ДЗ 1 состоит из 2х частей:'''
#
+
#
+
#
+
  
== Литература ==
+
'''Часть 1'''
#
+
 
#
+
Создайте структуру базы данных по выбранной вами тематике из списка ниже.
#
+
 
 +
Предметные области (выберите одну):
 +
Продажа автомобилей / Приют для животных / Железнодорожные перевозки / Служба доставки / Организация марафона
 +
 
 +
Требования к базе данных:
 +
•  Должно быть не менее 4 сущностей (включая технические объекты).
 +
•  Должна быть хотя бы одна связь один-ко-многим.
 +
•  Должна быть хотя бы одна связь многие-ко-многим.
 +
•  Все отношения приведены к третьей нормальной форме (3НФ).
 +
 
 +
Требования к оформлению:
 +
•  ER-диаграмму необходимо составить на app.dbdesigner.net. На проверку нужно прислать ссылку на диаграмму.
 +
•  Также необходимо подготовить SQL-скрипт с DDL для создания таблиц (обратите внимание на ограничения) и заполнения примерами данных.
 +
 
 +
'''Часть 2'''
 +
 
 +
1.  Создайте таблицу ****_SALARY_HIST, где **** — ваш уникальный идентификатор.
 +
В таблице должна быть SCD2 версия таблицы de.histgroup с полями:
 +
•  PERSON
 +
•  CLASS
 +
•  SALARY
 +
•  EFFECTIVE_FROM
 +
•  EFFECTIVE_TO
 +
 
 +
2.  Используя таблицы ****_SALARY_HIST и de.salary_payments, напишите SQL-скрипт создания таблицы ****_SALARY_LOG платежей сотрудникам, где
 +
•  PAYMENT_DT — дата выплаты
 +
•  PERSON
 +
•  PAYMENT
 +
•  MONTH_PAID — суммарно выплачено в месяце на дату последней выплаты
 +
•  MONTH_REST — осталось выплатить за месяц
 +
 
 +
'''В ответе приложите SQL-скрипты, ссылку на ER-диаграмму'''
 +
 
 +
'''Дедлайн: 01.12.2024 23.59'''
 +
------------------------------
 +
'''ДЗ 2 состоит из 2х частей:'''
 +
 
 +
'''Часть 1 (5 баллов)'''
 +
 
 +
На основе таблиц DE.LOG и DE.IP создайте структурированную таблицу посещений, отчет, который показывает, какой браузер является наиболее используемым в каждой области:
 +
XXXX_LOG ( DT DATE, LINK VARCHAR( 50 ), USER_AGENT VARCHAR( 200 ), REGION VARCHAR( 30 ))
 +
XXXX_LOG_REPORT ( REGION VARCHAR( 30 ), BROWSER VARCHAR( 10 ))
 +
 
 +
'''Часть 2 (5 баллов) '''
 +
 
 +
Представьте, вы работаете в медицинской клинике. Результаты анализов поступают в зашифрованном виде в файле medicine.xlsx. На сервере имеются таблицы de.med_an_name и de.med_name для расшифровки показателей.
 +
 
 +
Требуется:
 +
1. Легкий режим (максимум 3 балла):
 +
•  Получите данные с листа 'easy' в файле medicine.xlsx.
 +
•  Найдите пациентов, у которых хотя бы один анализ вне нормы.
 +
•  Выведите следующую информацию:Телефон, Имя, Название анализа, Заключение: 'Повышен' или 'Понижен'.
 +
•  Сохраните результат в формате .xlsx.
 +
 
 +
2. Сложный режим (максимум 5 баллов):
 +
•  Получите данные с листа 'hard' в файле medicine.xlsx.
 +
•  Найдите пациентов, у которых два и более анализов вне нормы.
 +
•  Выведите следующую информацию: Телефон , Имя, Название анализа, Заключение: 'Повышен', 'Понижен' или 'Положительный'.
 +
•  Сохраните результат в формате .xlsx.
 +
 
 +
В обоих режимах сохраните таблицу с расшифрованными значениями и результатами анализа в таблице public.xxxx_med_results в базе данных (помните про 4 буквы в начале, идентифицирующие вашу таблицу).
 +
 
 +
'''Дедлайн: 11.12.2024 23.59'''
 
#
 
#
 +
#
 +
 +
== Литература ==
 +
* Kimball, R. and M. Ross. The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling (Second Edition), 2002
 +
* Inmon, W. H., Teradata, and Corporation. (2016). Building the Data Warehouse. John Wiley & Sons. <br/> Redman, T. C. (1996). Data Quality: The Field Guide. Digital Press.
 +
* [https://ru.wikipedia.org/wiki/Медленно_меняющееся_измерение "Медленно меняющееся измерение (SCD)"]
 +
* Connelly, J. Asynchronous Data Dependencies in Distributed Systems. ACM Digital Library.<br/>Ousterhout, J. A. (2013). A Philosophy of Software Design. Addison-Wesley.<br/>Martin, R. C. (2017). Clean Architecture: A Craftsman's Guide to Software Structure and Design. Pearson Education.<br/>Fowler, M. (2012). Patterns of Enterprise Application Architecture. Addison-Wesley.<br/>Смит, М., & Дэвидсон, Р. (2015). Разработка эффективных алгоритмов и программ. Вильямс.<br/>Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.
 +
*
 +
* "SQL Performance Explained" by Markus Winand. <br/>"High Performance MySQL" by Baron Schwartz, Peter Zaitsev, Vadim Tkachenko. <br/> "Designing Data-Intensive Applications" by Martin Kleppmann. <br/>"The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling" by Ralph Kimball and Margy Ross. <br/> "Practical ETL Design: Building High-Performance Data Integration Systems" by Jordan Tigani and Christopher Jones.
 +
...
 +
* Jay Kreps - "I Heart Logs: Event Data, Stream Processing, and Data Integration" <br/> Nathan Marz, James Warren - "Big Data: Principles and best practices of scalable real-time data systems"

Текущая версия на 01:29, 5 декабря 2024

О курсе

Занятия проводятся в Zoom по вторникам в 19:40 - 21:00

Контакты

Канал / чат курса в TG: channel

Преподаватель: 1) Сайков Александр 2) Анатолий Бардуков

Занятие Тема Дата Материалы для самоподготовки к семинарам
1 Запись Введение инженер данных 06.11.2024
2 Запись PostgreSQL, Схема данных, Slowly Changing Dimensions 12.11.2024
3 Запись Агрегатные функции, SCD 23.11.2024
4 Запись Регулярные выражения 26.11.2024
5 Запись Оптимизация запросов и CDC 03.12.2024
6 [Запись] Пример ETL процесса 10.12.2024
7 [Запись] Оптимизация производительности 17.12.2024

Записи консультаций

(Если они будут)

Формула оценивания

Запланированы 3 дз (2 дз на 1 неделю, проект на 2 недели), тесты к каждой неделе курса

Оценка = 0.3*проект + 0.5*практические задания + 0.2*тесты

UPD1: начиная со второго домашнего задания, снимаем 1 балл раз в три дня за сдачу после deadline, но ниже 4 не снимаем.

UPD2: начиная с 3 ДЗ снимаем до 1 балла за неаккуратное оформление кода (не следует общеизвестным sql style guides)

Домашние задания

ДЗ 1 состоит из 2х частей:

Часть 1

Создайте структуру базы данных по выбранной вами тематике из списка ниже.

Предметные области (выберите одну):

Продажа автомобилей / Приют для животных / Железнодорожные перевозки / Служба доставки / Организация марафона

Требования к базе данных:

•   Должно быть не менее 4 сущностей (включая технические объекты).
•   Должна быть хотя бы одна связь один-ко-многим.
•   Должна быть хотя бы одна связь многие-ко-многим.
•   Все отношения приведены к третьей нормальной форме (3НФ).

Требования к оформлению:

•   ER-диаграмму необходимо составить на app.dbdesigner.net. На проверку нужно прислать ссылку на диаграмму.
•   Также необходимо подготовить SQL-скрипт с DDL для создания таблиц (обратите внимание на ограничения) и заполнения примерами данных.

Часть 2

1. Создайте таблицу ****_SALARY_HIST, где **** — ваш уникальный идентификатор. В таблице должна быть SCD2 версия таблицы de.histgroup с полями:

•  PERSON
•   CLASS
•   SALARY
•   EFFECTIVE_FROM
•   EFFECTIVE_TO

2. Используя таблицы ****_SALARY_HIST и de.salary_payments, напишите SQL-скрипт создания таблицы ****_SALARY_LOG платежей сотрудникам, где

•   PAYMENT_DT — дата выплаты
•   PERSON
•   PAYMENT
•   MONTH_PAID — суммарно выплачено в месяце на дату последней выплаты
•   MONTH_REST — осталось выплатить за месяц

В ответе приложите SQL-скрипты, ссылку на ER-диаграмму

Дедлайн: 01.12.2024 23.59


ДЗ 2 состоит из 2х частей:

Часть 1 (5 баллов)

На основе таблиц DE.LOG и DE.IP создайте структурированную таблицу посещений, отчет, который показывает, какой браузер является наиболее используемым в каждой области: XXXX_LOG ( DT DATE, LINK VARCHAR( 50 ), USER_AGENT VARCHAR( 200 ), REGION VARCHAR( 30 )) XXXX_LOG_REPORT ( REGION VARCHAR( 30 ), BROWSER VARCHAR( 10 ))

Часть 2 (5 баллов)

Представьте, вы работаете в медицинской клинике. Результаты анализов поступают в зашифрованном виде в файле medicine.xlsx. На сервере имеются таблицы de.med_an_name и de.med_name для расшифровки показателей.

Требуется:

1. Легкий режим (максимум 3 балла):
•   Получите данные с листа 'easy' в файле medicine.xlsx.
•   Найдите пациентов, у которых хотя бы один анализ вне нормы.
•   Выведите следующую информацию:Телефон, Имя, Название анализа, Заключение: 'Повышен' или 'Понижен'.
•   Сохраните результат в формате .xlsx.
2. Сложный режим (максимум 5 баллов):
•   Получите данные с листа 'hard' в файле medicine.xlsx.
•   Найдите пациентов, у которых два и более анализов вне нормы.
•   Выведите следующую информацию: Телефон , Имя, Название анализа, Заключение: 'Повышен', 'Понижен' или 'Положительный'.
•   Сохраните результат в формате .xlsx.

В обоих режимах сохраните таблицу с расшифрованными значениями и результатами анализа в таблице public.xxxx_med_results в базе данных (помните про 4 буквы в начале, идентифицирующие вашу таблицу).

Дедлайн: 11.12.2024 23.59

Литература

  • Kimball, R. and M. Ross. The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling (Second Edition), 2002
  • Inmon, W. H., Teradata, and Corporation. (2016). Building the Data Warehouse. John Wiley & Sons.
    Redman, T. C. (1996). Data Quality: The Field Guide. Digital Press.
  • "Медленно меняющееся измерение (SCD)"
  • Connelly, J. Asynchronous Data Dependencies in Distributed Systems. ACM Digital Library.
    Ousterhout, J. A. (2013). A Philosophy of Software Design. Addison-Wesley.
    Martin, R. C. (2017). Clean Architecture: A Craftsman's Guide to Software Structure and Design. Pearson Education.
    Fowler, M. (2012). Patterns of Enterprise Application Architecture. Addison-Wesley.
    Смит, М., & Дэвидсон, Р. (2015). Разработка эффективных алгоритмов и программ. Вильямс.
    Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.
  • "SQL Performance Explained" by Markus Winand.
    "High Performance MySQL" by Baron Schwartz, Peter Zaitsev, Vadim Tkachenko.
    "Designing Data-Intensive Applications" by Martin Kleppmann.
    "The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling" by Ralph Kimball and Margy Ross.
    "Practical ETL Design: Building High-Performance Data Integration Systems" by Jordan Tigani and Christopher Jones.

...

  • Jay Kreps - "I Heart Logs: Event Data, Stream Processing, and Data Integration"
    Nathan Marz, James Warren - "Big Data: Principles and best practices of scalable real-time data systems"