Untitled

mail@pastecode.io avatar
unknown
plain_text
2 months ago
5.2 kB
4
Indexable
Never
Николай Миронов

11:42
Как мы гарантируем, что в tmp_sources данные актуальны? Что если в source1 и source2 есть разница между записями в рамках одного и того же набора измерения с тем же набором атрибутов? Мы ведь после UNION получим список записей, в которых есть неактуальные данные, а потом вмёржим их в таблицы с измерениями в dwh.d_

Например:
Что если в source2 у строки craftsman_name, craftsman_address, craftsman_birthday, craftsman_email одно значение address, а в source3 у той же записей другое значение address?

В итоге у нас в tmp_sources две записи про одного мастера, различающиеся только по значению поля craftsman_address

Когда мы возьмем из tmp_sources SELECT DISTINCT craftsman_name, craftsman_address, craftsman_birthday, craftsman_email мы тоже получим две строки

Далее мы идем обновлять dwh.d_craftsman по условию ON d.craftsman_name = t.craftsman_name AND d.craftsman_email = t.craftsman_email

У нас есть матч с двумя этими строками и тогда мы запускаем   UPDATE SET craftsman_address = t.craftsman_address, craftsman_birthday = t.craftsman_birthday, load_dttm = current_timestamp

Поэтому два вопроса:
1. В таком случае какой в итоге адрес мы поставим этому мастеру в dwh.d_craftsman, если у него их два?
2. Как мы можем гарантировать, что такого случая не будет?)

Николай Миронов

15:38
Отдельный вопрос: почему у нас в источниках есть wide таблица, которая по сути является агрегатом трёх других источников? Зачем использовать источники и их же агрегат?

Николай Миронов

15:56
@vasilyevoleg привет!
Я задал вопросы выше, посмотри, пожалуйста, как будет время (забыл тегнуть в первый раз)

И еще вопросы:
1. Зачем мы третьем задании джойним tmp_sources с таблицами измерений, если все равно данные берем только из tmp_sources? 
2. Зачем мы еще раз заполняем таблицу фактов в пятом задании, если уже заполняли её в третьем задании?
3. Почему мы не можем заполнить все наши четыре таблицы факт+измерения сразу из tmp_sources и всё?

Я кажется плохо понимаю концептуально, что происходит от 1 до 5-го задания, объясни, пожалуйста :(

Николай Миронов

16:03
В целом фидбек по этому блоку задач.

В задачах очень плохо прописана последовательность рассуждений о том, что и зачем мы делаем.

Кажется, что суть всей цепочки заданий описана в первом абзаце 2-й задачи: "Напишите универсальный скрипт для обновления данных в таблицах. Нужно учесть, что каждый день в источнике появляются новые или обновлённые данные, а старые — удаляются. "

Потом часть этой логики дополняется на 4-й задаче:
Ежедневное обновление данных должно состоять из следующих этапов:
Извлечение данных из источников и размещение их во временной таблице.
Обновление в хранилище строк, что были обновлены на источнике за последние сутки, то есть строк, ключи которых встречаются во временной таблице.
Запись новых данных в хранилище. 
И то же самое дублируется в пятом.

При этом в блоке "теория" тупо написан DDL для миграции данных, но ничего не сказано о том, что мы делаем, зачем делаем и как это должно работать.

Это очень неудобно воспринимать.
Я все задачи сделал, но ничего концептуально не понял совсем и уже час пытаюсь понять, что же хотел сказать автор
Leave a Comment