powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
25 сообщений из 39, страница 1 из 2
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051469
Михаил Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Уже не один раз задавался вопросом - Как разбивают таблицу на факт и справочники?
Пример в файле Excel. На листе Выгрузка - исходная таблица. На втором листе исходник разбит на 5 таблиц.
Поделитесь опытом как лучше решать такие задачи. Или покажите как это сделать запросом.
Может ссылка на видео-инструкцию есть?
И еще вопрос - если за год набирается не более 15 000 строк в исходной таблице, то может и не надо делить данные на справочники и факт? Вес в мегабайтах же немного?
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051479
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил Л,

https://ru.wikipedia.org/wiki/Схема_звезды

https://ru.wikipedia.org/wiki/Схема_снежинки

если за год набирается не более 15 000 строк в исходной таблице, то может и не надо делить данные на справочники и факт, а может и надо. Это вам решать в зависимости от планов на будущее и требований к оборудованию.

К тому же когда/если потребуется позже внедрить SCD то вышеописанные приёмы и механизмы будут удобны либо необходимы. Управление правами доступа может упростить / потребовать разделение таблиц. Много их там этих моментов.
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051489
Михаил Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza,
про эти схемы я знаю.
Мне бы на каком нибудь небольшом примере посмотреть процесс обработки. Что бы определить стоит ли заморачиваться разбивать, а потом для каких нибудь калькуляций джойнить обратно.
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051508
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил Л
стоит ли заморачиваться разбивать, а потом для каких нибудь калькуляций джойнить обратно.


Если это вопрос "заморачиваться", то скорее всего уровень задачи при котором разбивать не стоит. Разбивать стоит если есть понимание для чего существуют схемы и когда их применять. На небольшом примере определиться с пониманием для чего ну никак не получится.
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051523
Михаил Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza,
Я в ms sql не работаю каждый день, поэтому как не коснется мне все в ms sql кажется трудным и замороченным. Работаю в основном в excel.
Рано или поздно все равно к этому (оптимизации базы данных путем минимизации повторений значений, то бишь разбивки данных на справочники и факт. Как я себе это понимаю) приду. Вот и собираю инфу заранее
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051555
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил Л
PizzaPizza,
про эти схемы я знаю.
Мне бы на каком нибудь небольшом примере посмотреть процесс обработки. Что бы определить стоит ли заморачиваться разбивать, а потом для каких нибудь калькуляций джойнить обратно.
Разбивать нужно как раз исключительно ради калькуляций :-)

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

Например, у вас в таблице есть поля заказчик, сумма, валюта.
Если вам считать не надо, то всё нормально, и ничего страшного, что Иван Иванов, Ваня Иванов, и Иванов И - это не три человека, а один. И что в одном месте в поле валюта написано "$", а в другом "Доллары США". Если считать не надо.

Но если вы хотите считать агрегаты по клиентам, или список заказа по клиентам, или сводить дебит-кредит, то лучше сделать справочник клиентов, справочник валют и т.д. Что бы не решать ребусы, сколько же всё таки у Иванова заказов.
Разные правила заполнения значений полей эту проблему иногда решают, но, по сути, правила и есть ссылка на справочник, только на чужой, а не на ваш. Например, для валют можно использовать официальный код валюты.
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051588
Михаил Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg
и ничего страшного, что Иван Иванов, Ваня Иванов, и Иванов И - это не три человека, а один. И что в одном месте в поле валюта написано "$", а в другом "Доллары США"

C такими данными боюсь работать).
Вообще данные из файла выгружены из 1с и обработаны в прямую таблицу в PQ. До PQ в каждой строке - одна счет-фактура. Данные точные - задваиваний не найдено.
У меня уже подготовлены данные за пять лет. Держу их цельной таблицей в SQL-базе, Access-базе и файле TXT. Чаще использую текстовый файл
Отдельно запросом PQ обрабатываю текущий год. И плюсую к данным текстового файла. Далее Power Bi или Power Pivot + Excel.
Меня все устраивает, а руководство вот мне все рассказывает как у конкурентов или партнеров настроено в Sql базе. Я в принципе для руководства и сделал вариант Sql - базы.
Сейчас вот думаю разбить на справочники и факт. Один раз разбить и загнать в отдельные таблицы - не большая проблема. Только не знаю как далее пополнять факты, проверять справочники на наличие новых клиентов или нового города.
Мне легче все таблицы базы очистить и снова заполнить уже с новыми фактами, городами, клиентами.
Пока не понимаю как именно дополнять. Поэтому и ищу видеоинструкцию или др.
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051603
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил Л,

В справочники выделяются колонки, смысловые значения которых повторяются в строках, такие как адреса, персональные данные, название организаций, типы товаров и так далее.
Таблица фактор содержит состояние этих данных. Справочник - "дом", справочник "адрес", факт значение - "построен в 1950 году", факт ссылка - справочник адресов.

Разделение данных на справочники и факты выполняется согласно смысла этих данных.
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051613
MoonRabbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил Л,
у вас какой-то очень спортивный интерес ))
если я правильно понял, то изначально данные лежат в 1С.
какие задачи вы выполняете выгружая эти данные в текст/эксель/другую БД? нет ли возможности решить эти задачи средствами 1С ?

что касается вашего вопроса, то насколько я понимаю, данные в MSSQL сервер вы каким-то образом вгоняете, т.е. имеется некий обработчик, который берет данные на стороне (1С) и втягивает их в одну таблицу.
допустим вы решите нормализовать данные и добавите еще таблиц, по идее вам остается всего-лишь изменить тот обработчик, чтобы он данные распихивал по нескольким таблицам. задача так стоит, правильно?
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051614
Михаил Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
Михаил Л,

В справочники выделяются колонки, смысловые значения которых повторяются в строках

И справочники нужны чтобы уменьшить размер базы данных? Я прав?

Мне кто-нибудь даст ссылку на инфу, где можно узнать как сделать справочники и факты и как это потом обслуживать
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051628
Михаил Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MoonRabbit

если я правильно понял, то изначально данные лежат в 1С.
какие задачи вы выполняете выгружая эти данные в текст/эксель/другую БД? нет ли возможности решить эти задачи средствами 1С ?

Долгая история. Расскажу в двух словах.
Все данные в 1с. Приходящий программист 1с получает оплату почасовую. Я, иксельщик, на окладе. Без программиста из 1с отчетом можно выгружать данные за период, но эти данные надо еще причесывать в Power Query.
Я уже все данные за несколько лет подготовил и храню в текстовом файле. С этими данными, по требованию, могу строить сводные в течение 5-60 минут. Так обычно и происходит - продукт-менеджеры просят сделать какой либо отчет и уже минут через 15 получают его. Не знаю сколько времени потребуется программисту 1с построить сводные в 1с. Мы этого программиста видим то 2-3 раза в месяц.
MoonRabbit
данные в MSSQL сервер вы каким-то образом вгоняете, т.е. имеется некий обработчик, который берет данные на стороне (1С) и втягивает их в одну таблицу.
допустим вы решите нормализовать данные и добавите еще таблиц, по идее вам остается всего-лишь изменить тот обработчик, чтобы он данные распихивал по нескольким таблицам. задача так стоит, правильно?

Да, все правильно. Даже больше. У меня база уже состоит из справочников и факта. Таблицы подготавливаю в Power Query, выгружаю в Excel(как в файле на листе Наверное так) и загоняю макросом (insert построчно) в базу. В Vba я плох, но что надо нашел и настроил.

Хотел бы обойтись без Power Query. То есть обработанную таблицу на листе Выгрузка одним Sql - запросом разложить по таблицам в базу. Как то так.
Ищу примеры чтобы посмотреть
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051641
MoonRabbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил Л

MoonRabbit
данные в MSSQL сервер вы каким-то образом вгоняете, т.е. имеется некий обработчик, который берет данные на стороне (1С) и втягивает их в одну таблицу.
допустим вы решите нормализовать данные и добавите еще таблиц, по идее вам остается всего-лишь изменить тот обработчик, чтобы он данные распихивал по нескольким таблицам. задача так стоит, правильно?

Да, все правильно. Даже больше. У меня база уже состоит из справочников и факта. Таблицы подготавливаю в Power Query, выгружаю в Excel(как в файле на листе Наверное так) и загоняю макросом (insert построчно) в базу. В Vba я плох, но что надо нашел и настроил.

Хотел бы обойтись без Power Query. То есть обработанную таблицу на листе Выгрузка одним Sql - запросом разложить по таблицам в базу. Как то так.
Ищу примеры чтобы посмотреть


что мне нравиться в работе с данными, так это то, что любую задачу можно решить несколькими способами.
в вашем случае:
1. полученный excel раздербанить на месте на нужные данные в соответствии с таблицами в БД и несколькими движениями втягивать потаблично. способ дурной на мой взгляд
2. средствами MSSQL (например через bulk insert) втянуть все данные в промежуточную таблицу и уже оттуда раскидать по целевым.
способов втянуть данных несколько, рекомендую вот это почитать: https://docs.microsoft.com/ru-ru/sql/relational-databases/import-export/bulk-import-and-export-of-data-sql-server?view=sql-server-ver15

и здесь много раз обсуждался импорт и местами последующая обработка: https://www.sql.ru/forum/afsearch.aspx?s=?????? ?? excel&submit=?????&bid=1


Михаил Л
MoonRabbit

если я правильно понял, то изначально данные лежат в 1С.
какие задачи вы выполняете выгружая эти данные в текст/эксель/другую БД? нет ли возможности решить эти задачи средствами 1С ?

Долгая история. Расскажу в двух словах.
Все данные в 1с. Приходящий программист 1с получает оплату почасовую. Я, иксельщик, на окладе. Без программиста из 1с отчетом можно выгружать данные за период, но эти данные надо еще причесывать в Power Query.
Я уже все данные за несколько лет подготовил и храню в текстовом файле. С этими данными, по требованию, могу строить сводные в течение 5-60 минут. Так обычно и происходит - продукт-менеджеры просят сделать какой либо отчет и уже минут через 15 получают его. Не знаю сколько времени потребуется программисту 1с построить сводные в 1с. Мы этого программиста видим то 2-3 раза в месяц.


1С не хотите освоить? ))
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051646
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может тредстартеру чего-нибудь про нормальные формы почитать?
Из реляционной теории...
Люди старались - писали.
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051648
Михаил Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MoonRabbit

1С не хотите освоить? ))

Если честно - нет)
Хотел бы Dax побольше изучить, но свободного времени на работе мало, а дома вечером уже не лезет.
К тому же у нас конфигуратор запаролен.
Из Excel у меня есть доступ к серверу 1с, но там и черт ногу сломает (чего стоят ключи из случайнонабранных значений).
Мне в 1с нужен только один настроенный отчет(данные по продажам за последние день или неделю). За другим я не обращаюсь в 1с.
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051651
Михаил Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222
Может тредстартеру чего-нибудь про нормальные формы почитать?
Из реляционной теории...
Люди старались - писали.

мне бы видео какое-нибудь.
От Специалист нет видео, где не спеша и не уставая в течение дня все рассказывают, как по ссылке
YouTube Video
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051655
Михаил Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MoonRabbit

2. средствами MSSQL (например через bulk insert) втянуть все данные в промежуточную таблицу и уже оттуда раскидать по целевым.

По моему, это то что нужно.
Если не против, в течение недели я подготовлю пример, сможете показать как запросом это делается?
Пример будет тот же, на 8 колонок. Строк сделаю побольше.
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051687
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил Л
Вообще данные из файла выгружены из 1с и обработаны в прямую таблицу в PQ. До PQ в каждой строке - одна счет-фактура. Данные точные - задваиваний не найдено.
У меня уже подготовлены данные за пять лет. Держу их цельной таблицей в SQL-базе, Access-базе и файле TXT. Чаще использую текстовый файл
Отдельно запросом PQ обрабатываю текущий год. И плюсую к данным текстового файла. Далее Power Bi или Power Pivot + Excel.
Меня все устраивает, а руководство вот мне все рассказывает как у конкурентов или партнеров настроено в Sql базе. Я в принципе для руководства и сделал вариант Sql - базы.
Если речь не об оперативной базе, а о рид-онли витрине, то руководство неправо (насчёт нормализации).
Какой нибудь SQL-сервер тут полезен разве что для мощного и удобного движка и языка, но нормализовать необязательно, если вам так удобнее работать с данными.
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051688
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Михаил Л#22291213]
aleks222
Может тредстартеру чего-нибудь про нормальные формы почитать?
Из реляционной теории...
Люди старались - писали.

мне бы видео какое-нибудь.
=======
Наконец-то вспомнили, что такое Реляционная БД.
Но ТС не умеет читать!!! Кто-то пишет здесь за него(((((((
"Мне бы видео"
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051878
Михаил Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MoonRabbit

2. средствами MSSQL (например через bulk insert) втянуть все данные в промежуточную таблицу и уже оттуда раскидать по целевым.

Михаил Л
По моему, это то что нужно.
Если не против, в течение недели я подготовлю пример, сможете показать как запросом это делается?
Пример будет тот же, на 8 колонок. Строк сделаю побольше.

Подготовил пример. В двух файлах - Сначала запустить Документ1, затем Документ2.

Все что мог сделал.
Хотел бы увидеть как запросом раскидать из временной таблицы(Название такое, Таблица не временная, а промежуточная) в итоговые. Наверное, должна быть проверка на дублирование.
Прошу показать как решить эту задачу на примере. Желательно упрощенно(как у меня в примере)
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051880
Михаил Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg
Если речь не об оперативной базе, а о рид-онли витрине, то руководство неправо (насчёт нормализации).
Какой нибудь SQL-сервер тут полезен разве что для мощного и удобного движка и языка, но нормализовать необязательно, если вам так удобнее работать с данными.

Руководство хочет нас постоянно чем нибудь нас занимать. Наверное их устроит если я задачи буду решать дольше чем мог бы)
Не прикрепилось сразу два файла. Вот второй файл
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051884
Михаил Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
опять)
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40051934
Михаил Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИВП

"Мне бы видео"

Мне вот видео легче воспринимается чем чтение. Или наглядные рисунки типа комиксов)
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40052137
Михаил Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неужели задача трудная для профессионалов?
Прошу помочь с решением
Может с примером что не так?

При заполнении от даты остается только год. Для примера это не принципиально. Надо было мне и дату обернуть в одинарные кавычки.
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40052139
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил Л
Неужели задача трудная для профессионалов?
Прошу помочь с решением
Может с примером что не так?

При заполнении от даты остается только год. Для примера это не принципиально. Надо было мне и дату обернуть в одинарные кавычки.


Никто не будет разжевывать тебе прописные истины реляционной теории.
Для этого писаны учебники.
...
Рейтинг: 0 / 0
Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
    #40052143
Михаил Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222, не говори за всех.
Мне теория полностью не нужна. Нужно решение на конкретном примере
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как правильно и практично разбить исходную таблицу на табл-факт и табл-справочники
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]