powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как правильно сделать таблицу фактов?
23 сообщений из 23, страница 1 из 1
Как правильно сделать таблицу фактов?
    #39749745
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть 8 таблиц с фактами, из которых необходимо сделать аналитику.
И ещё куча таблиц-словарей типа фамилии, названия городов, складов и т.д.

Для аналитики (powerBI) необходимо, чтобы все факты располагались в центральной таблице. Это даст возможность сделать какую-то аналитику вроде "сумма фактов в третьей таблице разделить на сумму фактов в первой" и т.д.
Приходится делать так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE VIEW facts(A_fact, B_fact, C_fact, D_fact, E_fact, F_fact, G_fact, H_fact)
SELECT ФИО, Офис, A_fact, null, null, null, null...
FROM A
UNION ALL
SELECT ФИО, Офис, null, B_fact, null, null, null...
FROM B
UNION ALL
SELECT ФИО, Офис, null, null, C_fact, null, null...
FROM C
UNION ALL
...


Есть ли какой-то способ не указывать эти "null"? При попытке добавить новый столбец фактов в таблицу B
Код: sql
1.
2.
3.
4.
5.
6.
...
UNION ALL
SELECT ФИО, Офис, null, B_fact1, B_fact2, null, null, null...
FROM B
UNION ALL
...


приходится терпеливо прописывать null во всех остальных таблицах.

Или эта задача вообще совсем иначе решается?
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39749753
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ныне, присно и во веки веков 8 фактов будет?

Анализируй это.
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39749789
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222Ныне, присно и во веки веков 8 фактов будет?

Анализируй это.
факты могут добавиться.
И какие могут быть предложения? Вот, у меня 8 таблиц, а фактов нифига не 8. Там есть и текстовые типа "категории", и т.д. - я задолбался уже эти столбцы добавлять и null по всем 8 таблицам раскидывать.

Это те не факты типа "сумма в рублях", к которым в любой момент могут добавиться "сумма в долларах", "сумма в йенах" и т.д.
Т.е. это именно глобальные факты: "объём дохода", "объём затрат", "объём заказа" и т.д.
Есть таблица с инфой о подписанных договорах - она содержащих инфу о доходах,
есть таблица со счетами всякими - она содержит инфу об затратах
есть таблица поступивших заказов - она содержит инфу о заказах

и так далее. Далее в PowerBI вычитаю из первого второе и получаю прибыль и т.д.

В кубах подобные задачи решаются. Но ничего не могу поделать - нет тут сервера кубов у меня.
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39749798
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

Колонки - это атрибуты, а у вас получается, что колонки - это сущности.

Но задача в целом мне непонятна. С примером было бы гораздо нагляднее.
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39749827
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizzaCharles Weyland,

Колонки - это атрибуты, а у вас получается, что колонки - это сущности.

Но задача в целом мне непонятна. С примером было бы гораздо нагляднее.
Все столбцы, начиная с четвёртого, - в рублях.
Исполнитель_ID Офис_ID Дата Запланировано дохода Объём поступившего заказа(руб) объём(кол-во) отгружено(руб) отгружено(кол-во)11 1.01.2018 400nullnull11 1.02.2018 600nullnull11 1.03.2018 600nullnull11 24.01.2018 null 80 5 null null11 26.01.2018 null 120 3 null null11 31.01.2018 null 110 4 null null11 4.02.2018 null 50 3 null null11 6.02.2018 null 220 6 null null11 15.02.2018 null 90 6 null null11 25.02.2018 null 190 9 null null11 4.02.2018 null 230 4 null null11 26.01.2018 null null null 40 211 29.01.2018 null null null 140 211 3.02.2018 null null null 130 411 27.02.2018 null null null 100 611 7.02.2018 null null null 300 6
Таблица - результат объёдинения нескольких таблиц (планы, доходы, заказы). Это позволяет мне сделать ту самую пресловутую схему "звезда", зафигачив все факты в одну таблицу. И таким образом выбрав конкретного исполнителя, работающего в конкретном офисе, могу узнать его эффективность работы в январе, феврале, марте и суммарную, сравнить "Ожидания и реальность" и т.д.
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39749828
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вот, даже здесь две колонки забыл null'ами забить.
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39749842
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles WeylandТаблица - результат объёдинения нескольких таблиц (планы, доходы, заказы). Это позволяет мне сделать ту самую пресловутую схему "звезда", зафигачив все факты в одну таблицу . И таким образом выбрав конкретного исполнителя, работающего в конкретном офисе, могу узнать его эффективность работы в январе , феврале, марте и суммарную, сравнить "Ожидания и реальность" и т.д.
А есть дата оформления заказа. Есть дата поступления товара на склад под заказ клиента. Есть дата начала действия заказа (когда клиент ожидает поступления товара). Есть дата первой отгрузки. Есть дата последней отгрузки. Есть дата первой оплаты. Есть дата последней оплаты. Есть дата возврата части оплаты как коррекции между бухгалтериями.

Продавец продал 1 января клиенту вагон скрепок. 1 февраля вагон поступл на склад фирмы. 1 марта его перегрузили на грузовики и отправили. 1 апреля грузовик номер 1 доехал до клиента и был принят на его складе. 2 апреля грузовик оформили накладной. 3 апреля оформили платежное поручение на оплату за первый грузовик. 4 апреля приехал второй грузовик. Оказалось, что скрепки проржавели, пока ехали. 4 мая возвращенный грузовик оформили как возврат от клиента на складе фирмы. 1 июня пришел очередной вагон со скрепками для ДРУГОГО клиента. С которым было согласовано, что ему отправят один грузовик из двух, а один отправят тому клиенту, который уже давно ожидает. Разумеется, при оформлении поступления на склад 2 июня все скрепки из второго вагон были оформлены как заказ клиента номер 2.
Далее второй грузовик в июле был отправлен и разгружен у первого клиента, в августе последний - второй платеж - до последнего шекеля был отправлен на банковский счет. 1 сентября бухгалтерия после сверки закрыла договор поставки как исполненный. Менеджер готовится получить свои бонусы за продажу.


Вопрос - как по дате отследить успешность реализации для клиента номер 1 и менеджера по продажам номер 1, если выбрать фильтром заказы января? Видите, какой хороший вопрос? Ваши заказчики вообще понимают, ЧТО они увидят в отчетах PowerBI, или будет как в песне малоизвестной российской исполнительницы Алены Апиной - "я его слепила из того, что было, а потом, что было - то и полюбила".
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39749845
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles WeylandДалее в PowerBI вычитаю из первого второе и получаю прибыль и т.д.

А потом выяснится, что суммы по заказам без учета российского НДС, суммы по оплатам с учетом НДС и так далее. И что нельзя вычитать и делить ничего ни с чем.

Вы таки знаете, я Вам скажу, только Вы не обижайтесь. Российский IT настолько бессмысленный и беспощадный, что прежде всего поражает воображение исполнителей - а потом уже по цепочке заказчиков таких "учетно"-"отчетных" систем и их пользователей.
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39749850
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAPCharles WeylandДалее в PowerBI вычитаю из первого второе и получаю прибыль и т.д.

А потом выяснится, что суммы по заказам без учета российского НДС, суммы по оплатам с учетом НДС и так далее. И что нельзя вычитать и делить ничего ни с чем.

Вы таки знаете, я Вам скажу, только Вы не обижайтесь. Российский IT настолько бессмысленный и беспощадный, что прежде всего поражает воображение исполнителей - а потом уже по цепочке заказчиков таких "учетно"-"отчетных" систем и их пользователей.
да с чего ж обижаться.
Всё верно описываете. Вся подробная информация о движении товара, с IDшниками и прочим - лежит в своих таблицах. В нужных валютах, с нужными примечаниями и прочим.

У описанной выше таблицы есть конкретная задача, не привязанная к конкретным заказам.
И суть состоит в том, что нужно просто посмотреть эффективность работы сотрудников и подразделений. Запланировано, что он сможет выполнить на одну сумму, поступает ему задач на другую, выполняет на третью. Нет задачи следить за конкретным заказчиком.
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39749860
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles WeylandЗапланировано, что он сможет выполнить на одну сумму, поступает ему задач на другую, выполняет на третью. Нет задачи следить за конкретным заказчиком.
А когда заказы по факту обслуживает другой менеджер по продажам? Первый ушел на больничный, а второй бегает по подразделениям, контролирует отгрузку, оплату, созванивается, когда будет возврат забракованного, и так далее.

У Вас сейчас будет несколько таких "таблиц фактов", каждая из которых намертво привязана к одной дате. А далее заказчик системы вспомнит небольшой нюанс и будет просить сделать "мааааленькую переделку". Теперь представьте, как все таблицы фактов переделаются, как все формулы в отчетах PowerBI "едут" напрочь.

Резюмирую - я не верю ни в "серебряную пулю", ни в единую таблицу фактов для любой, самой мелкой задачи, когда сравниваются план и факт из разных календарных периодов.
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39749866
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

для меня непонятно, как вы эту одну таблицу наполнять собираетесь.

если чисто для консолидированных или обзорных отчетов я б сделал вьюшку/ки и из неё/них уже делал бы Charles Weylandкакую-то аналитику вроде "сумма фактов в третьей таблице разделить на сумму фактов в первой" и т.д.
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39749977
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

cделайте olap кубик, на который и натравите ваш powerBI
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39750034
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizzaCharles Weyland,

для меня непонятно, как вы эту одну таблицу наполнять собираетесь.

если чисто для консолидированных или обзорных отчетов я б сделал вьюшку/ки и из неё/них уже делал бы
да никак
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39750037
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarikNavyCharles Weyland,

cделайте olap кубик, на который и натравите ваш powerBI

Charles WeylandВ кубах подобные задачи решаются. Но ничего не могу поделать - нет тут сервера кубов у меня.
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39750057
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAPА когда заказы по факту обслуживает другой менеджер по продажам?
Вопросы здравые.
Но цель годы делать сложную идеальную систему, которую не потребуется менять десятками лет - задача неправильная.
Тут всё проще: наклепал запрос, загнал во вьюшку, сделал отчёт, народ посмотрел, подумал - нравится/не нравится. Забраковали, сделали другое решение.

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

Да, заказ взят в январе, а выполнен в марте. Но вычисления будут производиться "мартовский доход"/"мартовский объём заказа".
Это во многом дебильно.
Но заказчик хочет посмотреть на практике, насколько это отражает реальность, ведь многие заказы на самом деле закрываются в тот же день.
ЗАКАЗЧИК"Давай для начала сделаем хоть что-то, покажи для начала хотя бы это решение, и уже на практике поговорим, почему оно имеет недостаточную достоверность и решим, как её улучшить".
Статистика - вообще вещь такая: как повернёшь, то и получишь. Вот, люди хотят и так повертеть, и иначе повертеть.
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39750261
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weylandда никак
Ну сделай генератор вьюшки из упрощенного шаблона.
Null вставит железный механизм.
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39750417
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles Weyland,

Создайте сбор данных select-insert, не мучайте представления.
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39750504
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles WeylandPizzaPizzaCharles Weyland,

для меня непонятно, как вы эту одну таблицу наполнять собираетесь.

если чисто для консолидированных или обзорных отчетов я б сделал вьюшку/ки и из неё/них уже делал бы
да никак

если проблема именно с нуллами, то

Код: sql
1.
2.
3.
4.
5.
SELECT ФИО, Офис, a.A_fact, b.B_fact, c.C_fact ...
FROM a
видимо LEFT JOIN b ON (id or key or ФИО Офис)
LEFT JOIN c ON (id or key or ФИО Офис)
...
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39750696
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles WeylandPizzaPizzaCharles Weyland,

Колонки - это атрибуты, а у вас получается, что колонки - это сущности.

Но задача в целом мне непонятна. С примером было бы гораздо нагляднее.
Все столбцы, начиная с четвёртого, - в рублях.
Исполнитель_ID Офис_ID Дата Запланировано дохода Объём поступившего заказа(руб) объём(кол-во) отгружено(руб) отгружено(кол-во)11 1.01.2018 400nullnull11 1.02.2018 600nullnull11 1.03.2018 600nullnull11 24.01.2018 null 80 5 null null11 26.01.2018 null 120 3 null null11 31.01.2018 null 110 4 null null11 4.02.2018 null 50 3 null null11 6.02.2018 null 220 6 null null11 15.02.2018 null 90 6 null null11 25.02.2018 null 190 9 null null11 4.02.2018 null 230 4 null null11 26.01.2018 null null null 40 211 29.01.2018 null null null 140 211 3.02.2018 null null null 130 411 27.02.2018 null null null 100 611 7.02.2018 null null null 300 6
Таблица - результат объёдинения нескольких таблиц (планы, доходы, заказы). Это позволяет мне сделать ту самую пресловутую схему "звезда", зафигачив все факты в одну таблицу. И таким образом выбрав конкретного исполнителя, работающего в конкретном офисе, могу узнать его эффективность работы в январе, феврале, марте и суммарную, сравнить "Ожидания и реальность" и т.д.

Вопрос в глобальной архитектуре.

ЕСЛИ СДЕЛАТЬ ПРАВИЛЬНО, ТО

Не надо объединять в одну таблицу.
1) Держите разные таблицы,
2) Сделайте дату гранулярной до дня.
3) Сделайте куб и по каждой таблице группу мер в кубе
4) Они вертикально сопоставятся по дате и другим совпадающим измерениям
В SSAS это уже проработали

ЕСЛИ ДЕЛАТЬ ПО БЫСТРОМУ, ТО ПОЛОЖИТЕ ЭТО В COLUMNSTORE и не парьтесь

Вопрос в том, что вы пытаетесь реализовать самопальный OLAP, а можно воспользоваться готовым
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39750760
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin,

какой куб? У автора нет SSAS.
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39750786
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосовa_voronin,

какой куб? У автора нет SSAS.

Так в том и вопрос, что может это сделать через куб/SSAS.
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39750787
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

Все подключается

https://docs.microsoft.com/en-us/power-bi/desktop-ssas-multidimensional
...
Рейтинг: 0 / 0
Как правильно сделать таблицу фактов?
    #39750856
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voroninВладислав Колосов,

Все подключается

https://docs.microsoft.com/en-us/power-bi/desktop-ssas-multidimensional

вот странный ты человек. Говоришь, что "всё" подключается, а сам даёшь ссылку на статью, где чёрным по белому сказано, что не всё подключается.

Есть у меня куб, не могу я его подключить. Пока что. Потом закупят - тогда смогу. Так что описанная выше задача носит исключительно временное решение.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как правильно сделать таблицу фактов?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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