powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Несколько таблиц фактов
19 сообщений из 19, страница 1 из 1
Несколько таблиц фактов
    #32245822
KurS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разрабатываю ХД (MS SQL Server 2000) в которое из касс выгружаю данные о продажах товаров за день. Есть измерения "Товар" и "Чек", которые по ключу связаны с таблицей фактов (остальные измерения не будем рассматривать). Проблема в том, что кроме действий с товаром (продажа, возврат, скидка на позицию) существуют операции с целым чеком (скидка на чек, возврат по номеру чека), которые в существующую таблицу фактов никак не вставишь (не определен товар). Я думаю создать еще одну таблицу фактов по скидкам и таблицу фактов по возвращенным чекам и связать их с измерением "Чек".
Можно ли затем при такой схеме (когда данные по одному чеку в разных таблицах фактов) построить куб, в котором будет отражаться сводная информация по чекам, или надо строить несколько кубов, и на основе их виртуальный по общему измерению "Чек"? И вообще, можно ли построить куб в случае, когда есть несколько таблиц фактов.
Извините, но OLAP только изучаю, поэтому и задаю такие вопросы.
С уважением. Сергей К.
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32245851
Дядя Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица фактов может быть только одна.
Так что придется делать несколько кубов и на их основе виртуальный.
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32245856
KurS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня таблица фактов связана с измерением "Товары" по ключевому полю. Как быть в случае, если в операции (скидка на весь чек) нет товара. Можно, наверное, в таблице измерений "Товары" искусственно создать пустое значение, которое "подвязывать" к таким операциям. Или может как-нибудь по-другому?
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32245996
BAm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BAm
Гость
to Дядя Федор

Вообще-то в MS OLAP можно иметь несколько факт-таблиц, используя разбиение куба на партиции.
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32246104
Дядя Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня таблица фактов связана с измерением "Товары" по ключевому полю. Как быть в случае, если в операции (скидка на весь чек) нет товара. Можно, наверное, в таблице измерений "Товары" искусственно создать пустое значение, которое "подвязывать" к таким операциям. Или может как-нибудь по-другому?

Можно так, можно попытаться раскидать скидку на все товары чека пропрционально, если это будет правильным с точки зрения бизнеса. а можно опять таки - во вторую таблицу фактов и в отдельный куб, а потом - виртуальный.

Вообще-то в MS OLAP можно иметь несколько факт-таблиц, используя разбиение куба на партиции.

Эти таблицы должны иметь одинаковую структуру. Вопрос был не совсем про это, не находите?
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32246516
Вжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что есть измерение чек ???
Чек разве не является таблицей фактов ???
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32246526
Владимир Иванов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Постройте DWH или сделайте составное view.
В случае розницы лучше сделать инкрементальный DWH, т.к. следующая проблема это процессинг довольно большой базы. До "большой" ждать не так долго.
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32246538
KurS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В одном чеке могут продаваться несколько товаров. Кроме того в чеке есть такие операции - скидки как на товар, так и на весь чек, также возвраты и т.п. Поэтому я и посчитал, что фактом является более детальная операция (что уже нельзя раздробить на части). Возможно я и не прав.
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32246568
Вжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично у меня, может я и не прав, Чек и есть таблица фактов, повязанная с измерениями: товар, дисконтная карта, магазин, кассир и пр.
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32246589
KurS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Вжик.
Скорее всего правильнее как у Вас, но я хотел спросить другое - как отразить, например, такую операцию, как "Отмена чека" или "скидка на чек" в таблице фактов, которая повязана с измерением "Товар", ведь такая операция не привязывается к конкретному товару?
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32246601
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To KurS:

Это классческая ситуация, когда первая таблица фактов - это строки документов (строки чеков с товарами), а вторая таблица фактов - шапки документов (реквизиты чеков).

На основе моего опыта создания аналитическх систем для торговых розничных сетей могу предложить следуще 2 варианта (насколько я знаю, у Вас есть ознакомительная версия OLAP-сервера Cognos PowerPlay):

1) Создайте модель куба в модуле Transformer на основе 2 таблиц фактов (строки чеков и шапки чеков). По числу колонок (по структуре) они не будут совпадать. С помощью опции Insert Column вставьте несколько колонок в каждую таблицу фактов, чтобы привести их к одному формату, сделайте эти дополнительные колонки пустыми. Далее создайте структуру куба и сгенерируйте его. В итоге, когда Вы напрмер будете смотреть выручку от продаж товаров - Вы увидите ее распределение по товарам. Если же Вы переключтесь в показатель, соответствующий шапке чека - напротив товаров будут нули.

2) Сделайте два куба (каждый на основе 1 таблицы фактов), и настройте навигацию между ними (в свойствах куба закладка DrillThrough).

Понятно ли я объяснил? В случае чего - обращайтесь ко мне по ICQ или по e-mail.
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32246613
Вжик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно помножить таблицу факта и набор ключей, описывающих отмененные чеки, в результате получим таблицу факта "Отмененные чеки", или "Возвраты"
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32249184
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как по мне так чек ето просто еще одно измерение таблицы фактов Продажа,или нет.
Может я чего не понял,но чек содержит связку стоварами или нет?
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32249220
KurS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Источником данных для хранилища является таблица транзакций ККМ. Каждая запись в ней фиксирует определенную операцию, например
1. Чек №15; продажа по коду; Товар1; 1 шт. 10 руб.
2. Чек №15; скидка на чек; тип скидки 1; - ; 1 руб.
3. Чек №15; Оплата ......
4. Чек №15; Закрытие чека;-;-; 9 руб.
Если в первой строке есть ссылка на товар, то в последующих строках ее нет.
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32249318
GrimReaper777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Источником данных для хранилища является таблица транзакций ККМ. Каждая запись в ней фиксирует определенную операцию, например
1. Чек №15; продажа по коду; Товар1; 1 шт. 10 руб.
2. Чек №15; скидка на чек; тип скидки 1; - ; 1 руб.
3. Чек №15; Оплата ......
4. Чек №15; Закрытие чека;-;-; 9 руб.
Если в первой строке есть ссылка на товар, то в последующих строках ее нет


Вроде все отлично, вот эта таблица и будет таблицей фактов с измерениями Чек, Тип Операции, Товар, Количество, Стоимость
Необходимо добавить искусственный товар что то вроде "Неизвестный товар" или товар с пустым именем который можно спрятать и ссылаться на него в операциях соответствующих типов
Проблемы могут возникнуть с классификаторами товара: непонятно к какому классу или группе товара относить этот неизвестный товар. В любом случае это проблема источника данных и так сказать реинжиниринга бизнес-процессов :) а не проблема аналитической системы
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32249522
Дядя Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Искусственный товар - это, конечно, вполне решение проблемы. Но по своему опыту заню, что решение через виртуальные кубы - красивее.

Кстати, искуственным товаром не обойдешься. Понадобится делать искуственный тип скидки. Может еще чего вспомнишь...
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32249592
KurS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал вот как (упуская другие измерения для наглядности, напр. номер кассы, кассир, дата):
Таблицы фактов "Продажа по товарам" и "Скидки на чек". Таблицы измерений "Чек" (номера чеков), "Товар"(в виде Parent_child), "Операция" (виды операций - продажа по коду, сторнирование, скидка на чек, закрытие чека и т.п.). В "Продажа по товарам" - информация по продажам товаров, сторнированию, скидкам на позицию в чеке (количество, сумма), связана эта таблица с измерениями "Чек", "Товар", "Операция" через ключевые поля. В "Скидки на чек" - информация по скидкам на чек, если есть (сумма), связана эта таблица с измерениями "Чек", "Операция". Делаю два куба на основе этих таблиц фактов, а затем третий виртуальный куб на основе этих двух. Вроде бы все получилось, можно посмотреть - что продавалось, сколько было скидок. Вопрос вот в чем, это я попробовал на малом количестве данных, а что будет когда соберешь данные за несколько лет. Т.е. сильно ли отличается по производительности (обновление данных в многомерном хранилище, время выдачи результата пользователю) от стандартной (в ХД - данные по схеме "Звезда") такая схема организации данных. (в ХД несколько таблиц фактов, в многомерном хранилище есть виртуальный куб).
Извините за сумбурность.
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32250636
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Kurs:

Вопрос вот в чем, это я попробовал на малом количестве данных, а что будет когда соберешь данные за несколько лет.

Сколько у Вас сейчас чеков в куб закачено? И правильно ли я понимаю, что у Вас есть в кубе измерение, элементы которого (members) - это номера чеков? Если это так, то при закачке данных за несколько лет (вероятно миллионы или десятки миллионов чеков) Ваш куб будет процесситься очень медленно, будет большого размера, и отчеты будут тоже тормозить.

Я рекомендую, прежде чем создавать кубы и проектировать ХД - провести обследование потребностей пользователей. Мне кажется, Вы идете по сложному пути и в итоге изобретете 5-угольное колесо (которое конечно лучше, чем 4-угольное, но хуже, чем круглое :)
...
Рейтинг: 0 / 0
Несколько таблиц фактов
    #32251061
KurS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прелюдия - несколько супермаркетов, в каждом порядка пяти ККМ, в которых ведется справочник транзакций. Этот справочник надо периодически чистить, а данные перед этим сохранять, причем все. Вот и встал вопрос о хранилище. Я понимаю, что его структура должна быть приближена к тому, какие отчеты потребуются пользователям. Но в данный момент мне никто полный ответ не даст.
Понятно, что измерения должны включать показатели, по которым проводить анализ (магазин, касса, товар, операция (продажа, возврат, скидка), вид оплаты (наличными, кредитом)), и количество записей в таблице измерений должно быть достаточно небольшим.
Если не будет измерения "Чек" с членами "Номера чеков", а номер чека будет отдельной колонкой в таблице фактов, то можно ли затем решить такую задачу - посчитать количество чеков в привязке ко времени продажи (утро, день, вечер, ночь), когда продавался определеный товар или группа или более правильный пример - сравнить количество покупателей в разное время суток (т.е. количество чеков утром, днем, вечером, ночью).
В чеке может отражаться несколько фактов продажи разных товаров, а покупатель был один.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Несколько таблиц фактов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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