|
ETL и DWH- как правильно организовать структуру?
|
|||
---|---|---|---|
#18+
Всем привет! Прошу не судить строго, сейчас только разбираюсь в теме:) Застропорился на том, - как правильно организовать структуру данных на этапе трансформации. На данный момент у меня 2 схемы в БД - stage и сам dwh. Проблема в следующем: 1. На входе есть большая плоская таблица с регистрацией автомобилей, с полями - "почтовый индекс", "номерной знак", "место регистрации"; 2. В данной таблице присутствуют пропуски по этим 3-м полям и я решил сделать составной ключ, который проверяет, есть ли поле "почтовый индекс", если нет - "номерной знак" и далее "место регистрации" и на его основнии я заполняю регион, где зарегистрирован автомобиль; 3. Вопрос в том, где хранить эти 3 таблицы с фиксированными данными, на основании которых производится "склейка". На stage этапе, не по книжке, так как данные там надо удалять:) А в dwh в dimensions они мне по сути не нужны, и тоже вроде как не правильно... 4.Также вопрос в том, что было бы неплохо также туда вносить отсуствующие значения из сырых данных, чтобы их потом дополнять. Заранее спасибо за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 00:38 |
|
ETL и DWH- как правильно организовать структуру?
|
|||
---|---|---|---|
#18+
Вобщем решил создать еще одну схему service_dir, где буду хранить справочники с фиксированными данными, таккже перекину туда функции и ХП для очистки данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 12:16 |
|
ETL и DWH- как правильно организовать структуру?
|
|||
---|---|---|---|
#18+
buss, сумбурно у вас. но вроде справочники в ДВХ хранят, и ЕТЛ (склейку) тоже в момент переброски из стейджа в ДВХ надо делать. >>еще одну схему причем здесь схема? (это бантик просто), на какой уровень положили? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 14:09 |
|
ETL и DWH- как правильно организовать структуру?
|
|||
---|---|---|---|
#18+
buss, прочитайте про НСИ, по идее внешние справочники должны храниться там, затем они (как и любые другие данные) поступают в STAGE, затем в DDS-слой, а при потоке STAGE->DDS для вашей плоской таблицы вы обогащаете эти данные уже вашими ключами из справочников, которые уже лежат в DDS ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 14:46 |
|
ETL и DWH- как правильно организовать структуру?
|
|||
---|---|---|---|
#18+
StarikNavy, Спасибо! Постараюсь более складно объяснить, я вложил фото схемы dwh, как я сделал изначально. Я создала в dwh следующие таблицы: 1. dim_koatuu - содержит в себе данные по полную информацию по териториальному делению (область, район, населенный пункт и т.п.), она в дальнейшем будет выступать как dimension, для опредения региона; 2. dim_plates_region - содержит привязки, "тип номерного знака - регион - ссылка на код КОАТУУ", она нужна только для заполнения составного ключа; 3. dim_tsc_dep - содержит привязки "сервисный центр МВС - адрес - ссылка на код КОАТУУ", в принципе она тоже нужна только для заполнения составного ключа. 4. Залил в них дефолтные данные; 5. В фактовой таблице, я создал поле "koatuu_composite_key", которое заполняется при заливке данных из stage таблицы, в порядке наличия данных в полях dim_koatuu, dim_plates_region, dim_tsc_dep. Все как-бы работает, но чувствую, что не по феншую:) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 15:22 |
|
ETL и DWH- как правильно организовать структуру?
|
|||
---|---|---|---|
#18+
Критик, Спасибо, НСИ вроде как раз то, что я искал! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 15:40 |
|
ETL и DWH- как правильно организовать структуру?
|
|||
---|---|---|---|
#18+
buss, "Привязки" не нужно именовать dim_что_то_там, В dim-таблицах ключи должны быть числовые, обычно поля не именуют key, достаточно в имени иметь id, "Соединенное Королевство Великобритании и Северной Ирландии" влезет в ваше country? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 19:00 |
|
ETL и DWH- как правильно организовать структуру?
|
|||
---|---|---|---|
#18+
Ну и таблицы, где есть пк, а остальные поля nullable - вызывают вопросы. Собственно, как вы их будете заполнять, если даже сджойнить не сможете? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 19:02 |
|
ETL и DWH- как правильно организовать структуру?
|
|||
---|---|---|---|
#18+
Критик, Ещё раз спасибо за помощь и критику. Я писал, что это был первый вариант, как я сделал. Я все сразу запихал в dimensions, сейчас переделаю. По пункатам: 1. В Country хранится абривиатура ua, us и т.п. 2. Поля null я сделал, чтобы из входной таблицы добавлять новые отсуствующие данные и потом их обрабатывать; 3. Сджойнить соответственно потом можно будет, после того как заполню отсуствующие данные. Почитал про НСИ и хотел задать вопрос, так все-таки эти таблицы лучше хранить в отдельной схеме или вообще в отдельной бд и как их наполнять, если мои ответы 2 и 3 неверные? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 20:10 |
|
ETL и DWH- как правильно организовать структуру?
|
|||
---|---|---|---|
#18+
buss, до кучи если будете SSAS юзать то лучше тогда View на таблицу фактов сделать - потом менять проще насчет FK дело вкуса - но в DWH (OLAP) чаще их убирают ради производительности при загрузке в большие таблицы - но для вашего примера без разницы да и вообще если SSASб ms-sql то можно взять станд. пример AdventureWorks с примером куба Если БД другая (ну и соответвенно BI тул другой) - не скажу. можно скажем Кимбала почитать - но там довольго много всего. ps НСИ - я бы в одтельной схеме хранил ( nsi. ) если в скл-сервере хотя без разницы можно и префиксы в таблицах юзать ( nsI_country , nsi_ ) Главное зачем это вам - все таки лучше посмотерть на какой-то пример сделанный по каким-то шаблонам для MS-SQL я написал - для других наверно стоит поискать ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2021, 19:07 |
|
ETL и DWH- как правильно организовать структуру?
|
|||
---|---|---|---|
#18+
Гулин Федор, Спасибо! Вчера друг DWHшник, просветил как можно реализовать. Выкинуть пару столбцов и оставить все в dwh "снежинка", для начала, чтобы не путиться и запустить. А потом когда Кимпбала дочитаю уже разгрести. Сейчас занимаюсь:) Я делаю на Python и Postgres, чтобы потом перенести на Airflow. Это мне нужно и для учебы и для текущей работы, поэтому и парюсь именно с этими данными... Из примеров в интернете, мне очень понравился: https://github.com/gtoonstra/etl-with-airflow . Но он там на "чистых" данных работает, а у меня тут 50% мусора. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2021, 20:41 |
|
|
start [/forum/topic.php?fid=49&msg=40066469&tid=1857149]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 250ms |
total: | 388ms |
0 / 0 |