Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
Разрабатываю ХД (MS SQL Server 2000) в которое из касс выгружаю данные о продажах товаров за день. Есть измерения "Товар" и "Чек", которые по ключу связаны с таблицей фактов (остальные измерения не будем рассматривать). Проблема в том, что кроме действий с товаром (продажа, возврат, скидка на позицию) существуют операции с целым чеком (скидка на чек, возврат по номеру чека), которые в существующую таблицу фактов никак не вставишь (не определен товар). Я думаю создать еще одну таблицу фактов по скидкам и таблицу фактов по возвращенным чекам и связать их с измерением "Чек". Можно ли затем при такой схеме (когда данные по одному чеку в разных таблицах фактов) построить куб, в котором будет отражаться сводная информация по чекам, или надо строить несколько кубов, и на основе их виртуальный по общему измерению "Чек"? И вообще, можно ли построить куб в случае, когда есть несколько таблиц фактов. Извините, но OLAP только изучаю, поэтому и задаю такие вопросы. С уважением. Сергей К. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 10:24 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
Таблица фактов может быть только одна. Так что придется делать несколько кубов и на их основе виртуальный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 10:43 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
У меня таблица фактов связана с измерением "Товары" по ключевому полю. Как быть в случае, если в операции (скидка на весь чек) нет товара. Можно, наверное, в таблице измерений "Товары" искусственно создать пустое значение, которое "подвязывать" к таким операциям. Или может как-нибудь по-другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 10:48 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
to Дядя Федор Вообще-то в MS OLAP можно иметь несколько факт-таблиц, используя разбиение куба на партиции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 12:06 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
У меня таблица фактов связана с измерением "Товары" по ключевому полю. Как быть в случае, если в операции (скидка на весь чек) нет товара. Можно, наверное, в таблице измерений "Товары" искусственно создать пустое значение, которое "подвязывать" к таким операциям. Или может как-нибудь по-другому? Можно так, можно попытаться раскидать скидку на все товары чека пропрционально, если это будет правильным с точки зрения бизнеса. а можно опять таки - во вторую таблицу фактов и в отдельный куб, а потом - виртуальный. Вообще-то в MS OLAP можно иметь несколько факт-таблиц, используя разбиение куба на партиции. Эти таблицы должны иметь одинаковую структуру. Вопрос был не совсем про это, не находите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 13:05 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
Что есть измерение чек ??? Чек разве не является таблицей фактов ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 16:23 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
Постройте DWH или сделайте составное view. В случае розницы лучше сделать инкрементальный DWH, т.к. следующая проблема это процессинг довольно большой базы. До "большой" ждать не так долго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 16:26 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
В одном чеке могут продаваться несколько товаров. Кроме того в чеке есть такие операции - скидки как на товар, так и на весь чек, также возвраты и т.п. Поэтому я и посчитал, что фактом является более детальная операция (что уже нельзя раздробить на части). Возможно я и не прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 16:31 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
Лично у меня, может я и не прав, Чек и есть таблица фактов, повязанная с измерениями: товар, дисконтная карта, магазин, кассир и пр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 16:40 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
To Вжик. Скорее всего правильнее как у Вас, но я хотел спросить другое - как отразить, например, такую операцию, как "Отмена чека" или "скидка на чек" в таблице фактов, которая повязана с измерением "Товар", ведь такая операция не привязывается к конкретному товару? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 16:50 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
To KurS: Это классческая ситуация, когда первая таблица фактов - это строки документов (строки чеков с товарами), а вторая таблица фактов - шапки документов (реквизиты чеков). На основе моего опыта создания аналитическх систем для торговых розничных сетей могу предложить следуще 2 варианта (насколько я знаю, у Вас есть ознакомительная версия OLAP-сервера Cognos PowerPlay): 1) Создайте модель куба в модуле Transformer на основе 2 таблиц фактов (строки чеков и шапки чеков). По числу колонок (по структуре) они не будут совпадать. С помощью опции Insert Column вставьте несколько колонок в каждую таблицу фактов, чтобы привести их к одному формату, сделайте эти дополнительные колонки пустыми. Далее создайте структуру куба и сгенерируйте его. В итоге, когда Вы напрмер будете смотреть выручку от продаж товаров - Вы увидите ее распределение по товарам. Если же Вы переключтесь в показатель, соответствующий шапке чека - напротив товаров будут нули. 2) Сделайте два куба (каждый на основе 1 таблицы фактов), и настройте навигацию между ними (в свойствах куба закладка DrillThrough). Понятно ли я объяснил? В случае чего - обращайтесь ко мне по ICQ или по e-mail. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 16:56 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
Можно помножить таблицу факта и набор ключей, описывающих отмененные чеки, в результате получим таблицу факта "Отмененные чеки", или "Возвраты" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2003, 17:00 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
Как по мне так чек ето просто еще одно измерение таблицы фактов Продажа,или нет. Может я чего не понял,но чек содержит связку стоварами или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 17:18 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
Источником данных для хранилища является таблица транзакций ККМ. Каждая запись в ней фиксирует определенную операцию, например 1. Чек №15; продажа по коду; Товар1; 1 шт. 10 руб. 2. Чек №15; скидка на чек; тип скидки 1; - ; 1 руб. 3. Чек №15; Оплата ...... 4. Чек №15; Закрытие чека;-;-; 9 руб. Если в первой строке есть ссылка на товар, то в последующих строках ее нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 17:48 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
Источником данных для хранилища является таблица транзакций ККМ. Каждая запись в ней фиксирует определенную операцию, например 1. Чек №15; продажа по коду; Товар1; 1 шт. 10 руб. 2. Чек №15; скидка на чек; тип скидки 1; - ; 1 руб. 3. Чек №15; Оплата ...... 4. Чек №15; Закрытие чека;-;-; 9 руб. Если в первой строке есть ссылка на товар, то в последующих строках ее нет Вроде все отлично, вот эта таблица и будет таблицей фактов с измерениями Чек, Тип Операции, Товар, Количество, Стоимость Необходимо добавить искусственный товар что то вроде "Неизвестный товар" или товар с пустым именем который можно спрятать и ссылаться на него в операциях соответствующих типов Проблемы могут возникнуть с классификаторами товара: непонятно к какому классу или группе товара относить этот неизвестный товар. В любом случае это проблема источника данных и так сказать реинжиниринга бизнес-процессов :) а не проблема аналитической системы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 18:47 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
Искусственный товар - это, конечно, вполне решение проблемы. Но по своему опыту заню, что решение через виртуальные кубы - красивее. Кстати, искуственным товаром не обойдешься. Понадобится делать искуственный тип скидки. Может еще чего вспомнишь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 08:30 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
Сделал вот как (упуская другие измерения для наглядности, напр. номер кассы, кассир, дата): Таблицы фактов "Продажа по товарам" и "Скидки на чек". Таблицы измерений "Чек" (номера чеков), "Товар"(в виде Parent_child), "Операция" (виды операций - продажа по коду, сторнирование, скидка на чек, закрытие чека и т.п.). В "Продажа по товарам" - информация по продажам товаров, сторнированию, скидкам на позицию в чеке (количество, сумма), связана эта таблица с измерениями "Чек", "Товар", "Операция" через ключевые поля. В "Скидки на чек" - информация по скидкам на чек, если есть (сумма), связана эта таблица с измерениями "Чек", "Операция". Делаю два куба на основе этих таблиц фактов, а затем третий виртуальный куб на основе этих двух. Вроде бы все получилось, можно посмотреть - что продавалось, сколько было скидок. Вопрос вот в чем, это я попробовал на малом количестве данных, а что будет когда соберешь данные за несколько лет. Т.е. сильно ли отличается по производительности (обновление данных в многомерном хранилище, время выдачи результата пользователю) от стандартной (в ХД - данные по схеме "Звезда") такая схема организации данных. (в ХД несколько таблиц фактов, в многомерном хранилище есть виртуальный куб). Извините за сумбурность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 09:41 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
To Kurs: Вопрос вот в чем, это я попробовал на малом количестве данных, а что будет когда соберешь данные за несколько лет. Сколько у Вас сейчас чеков в куб закачено? И правильно ли я понимаю, что у Вас есть в кубе измерение, элементы которого (members) - это номера чеков? Если это так, то при закачке данных за несколько лет (вероятно миллионы или десятки миллионов чеков) Ваш куб будет процесситься очень медленно, будет большого размера, и отчеты будут тоже тормозить. Я рекомендую, прежде чем создавать кубы и проектировать ХД - провести обследование потребностей пользователей. Мне кажется, Вы идете по сложному пути и в итоге изобретете 5-угольное колесо (которое конечно лучше, чем 4-угольное, но хуже, чем круглое :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 19:13 |
|
||
|
Несколько таблиц фактов
|
|||
|---|---|---|---|
|
#18+
Прелюдия - несколько супермаркетов, в каждом порядка пяти ККМ, в которых ведется справочник транзакций. Этот справочник надо периодически чистить, а данные перед этим сохранять, причем все. Вот и встал вопрос о хранилище. Я понимаю, что его структура должна быть приближена к тому, какие отчеты потребуются пользователям. Но в данный момент мне никто полный ответ не даст. Понятно, что измерения должны включать показатели, по которым проводить анализ (магазин, касса, товар, операция (продажа, возврат, скидка), вид оплаты (наличными, кредитом)), и количество записей в таблице измерений должно быть достаточно небольшим. Если не будет измерения "Чек" с членами "Номера чеков", а номер чека будет отдельной колонкой в таблице фактов, то можно ли затем решить такую задачу - посчитать количество чеков в привязке ко времени продажи (утро, день, вечер, ночь), когда продавался определеный товар или группа или более правильный пример - сравнить количество покупателей в разное время суток (т.е. количество чеков утром, днем, вечером, ночью). В чеке может отражаться несколько фактов продажи разных товаров, а покупатель был один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2003, 11:23 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=32246601&tid=1873188]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 392ms |

| 0 / 0 |
