powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Хитрая иерархия (классификатор)
25 сообщений из 31, страница 1 из 2
Хитрая иерархия (классификатор)
    #32856560
Guest_321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер!

Есть таблица с полями ID, Klassificator_Type, Name, Parent_ID. Реально это несколько классификаторов товаров в одной таблице. У одного кода товара (ID) может быть несколько Parent_ID, например:
1, 1, Пиво Балтика, 7
1, 2, Пиво Балтика, 62
1, 3, Пиво Балтика, 184
2, 2, Пиво Fosters, 63

(7 - Пиво Российское, 62 - Пиво Дешевое, 63 - Пиво Дорогое, 184 - Пиво Светлое).
Также разумеется есть таблица фактов с полями Date, Item_ID, Qty, Price.

Поддерживает ли какой-нибудь аналитический программный продукт (OLAP, Query & Reporting) возможность работы с подобной таблицей? Особенно интересны мнения специалистов по MS AS, BusinessObjects, Cognos и Microstrategy. В данном примере нужно сделать 3 независимых иерархических измерения.
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32856584
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый Programmer_Ortodox,

если не можете ответить на вопрос, потрудитесь писать в другой форум.
Здесь таким сообщениям не место.


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32856620
На мой взгляд независимо от OLAP инструмента структуру справочника товаров придется привести к виду: ID, Klassificator_Type, Name, Parent_ID, Hierarchy1_ID, Hierarchy2_ID, Hierarchy3_ID.
Сделать это можно либо с помощью view, либо физически перестроив таблицу справочника товаров. Я бы рекомендовал последний способ.
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32856645
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Описание задачи выглядит как классическое many-to-many relationship между аттрибутами, и главная тонкость здесь не столько в том чтобы промоделировать это в OLAP кубе без дупликации членов измерений, а в том чтобы это аггрегировалось как DISTINCT SUM. Делать many-to-many и DISTINCT SUM может Analysis Services 2005. Подробнее об этом например здесь:
http://sqljunkies.com/WebLog/sqlbi/archive/2004/10/04/4447.aspx

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32856712
Guest_321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Андрей Прохоров:

Сделать это можно либо с помощью view, либо физически перестроив таблицу справочника товаров.

Этот справочник с иерархией является таблицей в учетной системе, и разработчики системы не позволяют менять ее структуру. Вьюшку тоже не сделать - используется экзотическая СУБД Progess. Есть только доступ через ODBC.
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32856937
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используется экзотическая СУБД Progess. Есть только доступ через ODBC

Наверное, на Gestori работаете или на чём-то подобном?

Тогда, в любом случае, всё равно придётся данные выгружать в выделенное хранилище на нормальной СУБД. В таком случае, можно спроектировать под любое средство OLAP.


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32857266
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чём проблема?
в MS AS 2k можно создать три parent-child измерения, у каждого свой Source Table Filter.
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32860119
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константин ЛисянскийВ таком случае, можно спроектировать под любое средство OLAP.

Dmitry Biryukovв MS AS 2k можно создать три parent-child измерения, у каждого свой Source Table Filter.

Мне кажется что Вы все таки упускаете из виду вопрос правильного аггрегирования. В предложенном Вами решениях Балтика будет фигурировать в 3-х разных измерениях и соответсвенно не будет аггрегироваться как DISTINCT SUM.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32860132
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МошаМне кажется что Вы все таки упускаете из виду вопрос правильного аггрегирования. В предложенном Вами решениях Балтика будет фигурировать в 3-х разных измерениях и соответсвенно не будет аггрегироваться как DISTINCT SUM.

Не совсем так. Я имел в виду одно измерение товар, в котором три точки входа (три верхних уровня) и один общий уровень - товар.
Для Microstrategy это будет одно измерение, поскольку в таблице фактов внешний ключ будет только один (ID товара). В таблице товаров будет три внешних ключа, ссылающихся на три разных таблицы (или иерархии таблиц).
Ну, а агрегация в этом случае будет просто SUM. Если вам надо посчитать, сколько продали дешёвого российского пива, делаете фильтр на два атрибута-родителя товара (ценовой диапазон и страна производителя), третье не трогаете. SQL получится тривиальный.
По крайней мере так я имел в виду. Очевидно, ошибся по поводу "любого" OLAP-средства. Однако в Cognos и в BO будет то же самое.

При чём тут DISTINCT SUM я не понял. Может, объясните вкратце?
Да, и неужели AS не умеет работать с разветвляющимися измерениями?


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32860146
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константин ЛисянскийВ таблице товаров будет три внешних ключа, ссылающихся на три разных таблицы (или иерархии таблиц).
Если бы было 3 разных аттрибута, то конечно проблем нет. Но Guest_321 в своем примере указал, что аттрибут только один. Я правда упустил что в таблице есть еще поле Klassificator_Type, которое в известной мере упрощает задачу. Когда я говорил что есть проблема DISTINCT SUM и double counting, то я имел в виду что если просто наивно создать иерархию с членами "Дешевое", "Российское", "Светлое" - то тогда будет double-counting на уровне All, т.к. пиво может быть и дешевым и светлым и российским. Интересно как Microstrategy решает такую задачу. Впрочем я за Microstrategy не волнуюсь - это ROLAP tool, и у нее не должно быть проблем генерить правильный SQL, даже если выбран multi-select "Дешевое" или "Светлое". А вот как с этим справляется Cognos - действительно интересно.
Константин ЛисянскийДа, и неужели AS не умеет работать с разветвляющимися измерениями?
Откровенно говоря, AS2K действительно не очень хорошо справляется с такими моделями. Можно конечно сделать, но надо будет сильно постараться. А вот AS2005 - без проблем.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32860189
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest_3212 Андрей Прохоров:

Сделать это можно либо с помощью view, либо физически перестроив таблицу справочника товаров.

Этот справочник с иерархией является таблицей в учетной системе, и разработчики системы не позволяют менять ее структуру. Вьюшку тоже не сделать - используется экзотическая СУБД Progess. Есть только доступ через ODBC.

Если строить кубы прямо на оперативной системе, то да, а если иметь все это в хранилище, то там можно сделать все как надо вам, а не разработчикам OLTP.
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32860192
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mosha
Откровенно говоря, AS2K действительно не очень хорошо справляется с такими моделями. Можно конечно сделать, но надо будет сильно постараться. А вот AS2005 - без проблем.

Имел я с AS2K как раз почти такую задачу. Деиствительно пришлось попотеть. Достаточно нетривиальный дизайн измерения, посему с тривиальным клиентом в том кубе делать нечего.
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32860194
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MoshaОписание задачи выглядит как классическое many-to-many relationship между аттрибутами, и главная тонкость здесь не столько в том чтобы промоделировать это в OLAP кубе без дупликации членов измерений, а в том чтобы это аггрегировалось как DISTINCT SUM. Делать many-to-many и DISTINCT SUM может Analysis Services 2005. Подробнее об этом например здесь:
http://sqljunkies.com/WebLog/sqlbi/archive/2004/10/04/4447.aspx

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights

Тоже самое могу вам продемострировать и в AS2K.
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32860379
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МошаА вот как с этим справляется Cognos - действительно интересно

В Cognos тоже, на самом деле, не так уж всё гладко. Там создать разветвляющееся измерение можно легко (правда, ограничение таково, что общий уровень может быть только один). Однако есть проблемы с наложением фильтров сразу на несколько веток в клиенте PowerPlay (то есть, дешёвое и светлое в нашем примере). Юрий меня поправит, если это не так.

С уважением,
Константин Лисянский
http://lissianski.narod.ru

P.S. Так уж получилось, что орфография заимствованных слов агрегация и атрибут такова, что в них по одной букве г и т. Впрочем, даже многие люди, постоянно говорящие на русском языке тоже делают такую ошибку.
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32860469
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfireТоже самое могу вам продемострировать и в AS2K.
Тем самым осчастливите не одного участника форума.
Можно на примере двух измерений времени:
Год-неделя-день и год-месяц-день
отношение неделя:месяц - many-to-many
Либо регион-город-магазин и регион-територия-магазин. отношение город:територия - many-to-many, остальные one-to-many.
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32860675
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно на примере двух измерений времени:
Год-неделя-день и год-месяц-день
отношение неделя:месяц - many-to-many.


Тут не только неделя к месяцу many-to-many, но и год из одной иерархии не совпадает с годом из другой иерархии.


Либо регион-город-магазин и регион-територия-магазин. отношение город:територия - many-to-many, остальные one-to-many.

А как звучит постановка вопроса? Что на выходе вам желательно?
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32860776
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfire Можно на примере двух измерений времени:
Год-неделя-день и год-месяц-день
отношение неделя:месяц - many-to-many.


Тут не только неделя к месяцу many-to-many, но и год из одной иерархии не совпадает с годом из другой иерархии.

Почему?
Давайте для простоты считать что год начинается и заканчивается неполной неделей. т.е. года совпадают.

backfire
Либо регион-город-магазин и регион-територия-магазин. отношение город:територия - many-to-many, остальные one-to-many.

А как звучит постановка вопроса? Что на выходе вам желательно?

Например, продажи по териториальным единицам. Естественно без дублирования продаж магазинов.

Moshaесли просто наивно создать иерархию с членами "Дешевое", "Российское", "Светлое" - то тогда будет double-counting на уровне All, т.к. пиво может быть и дешевым и светлым и российским
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32862201
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, продажи по териториальным единицам. Естественно без дублирования продаж магазинов.

А у вас, что один магазин в нескольких территориях находится?
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32862651
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня как и у Guest_321 магазины классифицируются по нескольким классификаторам: города и територии. Естественно, что каждый магазин строго в одном городе и строго в одной территории. Но територии к городам - многие ко многим. Есть територии, которые объединяют мелкие города, и есть територии, которые делят крупные города.
А теперь берём запрос: територии, города, магазины on rows, Measures.Продажи on columns. В результате не смотря на то, что в каждой строке сумма продаж правильная, Grand Total больше, чем есть на самом деле, т.к. один и тот же магазин появляется в нескольких строках.
Судя по ссылке с этим справляется 2005, а решение для 2000?

backfire MoshaОписание задачи выглядит как классическое many-to-many relationship между аттрибутами, и главная тонкость здесь не столько в том чтобы промоделировать это в OLAP кубе без дупликации членов измерений, а в том чтобы это аггрегировалось как DISTINCT SUM. Делать many-to-many и DISTINCT SUM может Analysis Services 2005. Подробнее об этом например здесь:
http://sqljunkies.com/WebLog/sqlbi/archive/2004/10/04/4447.aspx

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights

Тоже самое могу вам продемострировать и в AS2K.
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32862746
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще то я пытался разделить две разные проблемы, но они почему то все время путаются :) Когда внутри измерения у атрибутов отношение many to many, как например недели к месяцам, то это более простая задача. Все равно они 1-to-many к ключу измерения (дни), который фигурирует в fact table. А вот когда атрибут одного измерения имеет many-to-many relationship к атрибуту другого измерения, и не связан напрямую с fact table, вот тогда дело сложнее. Например в fact table есть ключ по продукту (пиво) и measure "Продажи", но характеристики продукта (светлое, дешевое и т.д.) в fact table не хранятся, потому что им там не место - им место в другой таблице, где продаж нету, а есть только характеристики продукта.
С первой проблемой Константин Лисянский описал как справляются OLAP продукты - строят "разветвляюшуюся иерархию". А вот про вторую проблему, которая решается в AS2005 при помощи many-to-many dimensions, никто почему то не говорит, хотя она на мой взгляд гораздо более интересная.
backfire - когда Вы говорили что решали это на AS2K, Вы имели в виду первую или вторую проблему ?

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32862919
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня, например, - вторая.

Измерения: города и територии. Отношение между ними многие ко многим. В таблице фактов - только ключ измерения магазины. А в таблице магазинов уже хранятся его атрибуты: город и територия.

В любом случае хотелось бы видеть решения г-на backfire по любой из двух проблем.
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32863003
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry BiryukovУ меня, например, - вторая.

Измерения: города и територии. Отношение между ними многие ко многим. В таблице фактов - только ключ измерения магазины. А в таблице магазинов уже хранятся его атрибуты: город и територия.

В любом случае хотелось бы видеть решения г-на backfire по любой из двух проблем.


Тогда я что то не пойму в вашем дизайне.
Вы же писали, что у вас 2 измерения (одно измерение с 2 мя иерархиями)

1. Регион-Город-Магазин
2. Регион-Територия-Магазин

Обе иерархии (измерения) имеют одинаковый листовой уровень. Правильно?

в любом случае у вас таблица фактов связана с таблицей магазинов по одному полю в одношении один-к-многим. Так что это подпадает под случай 1. (по Моше)

Во вторых. Что такое Grand Totals? В MDX нет такой функции. (Приведите лучше MDX запрос, который возвращает вам неправильные суммы)
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32863015
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Moshabackfire - когда Вы говорили что решали это на AS2K, Вы имели в виду первую или вторую проблему ?

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights

Я имел ввиду вторую проблему. В двух словах ее не изложить. Напишу более подробно на выходных. Сейчас времени нет даже 15 минут.
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32863085
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4 плоских измерения: регион,город,територия,магазин
Grand Total - это то, что выводит Excel в последней строке(колонке)

MDX
SELECT HIERARCHIZE({[Measures].[Sales]}) DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON COLUMNS , CROSSJOIN(HIERARCHIZE({DrillDownLevel({[Area].[All Area]})}), HIERARCHIZE({DrillDownLevel({[City].[All City]})})) DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM [Sales] WHERE ([Region].[Region].&[1])
...
Рейтинг: 0 / 0
Хитрая иерархия (классификатор)
    #32863145
Dmitry Biryukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запустив этот mdx в MDX Sample Application увидел, что Grand Total - это первая строчка, т.е. ([All Area], [All City], [Sales], [Region].&[1])
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Хитрая иерархия (классификатор)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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