Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
Добрый вечер! Есть таблица с полями 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 независимых иерархических измерения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2005, 21:37 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
Уважаемый Programmer_Ortodox, если не можете ответить на вопрос, потрудитесь писать в другой форум. Здесь таким сообщениям не место. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2005, 23:00 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
На мой взгляд независимо от OLAP инструмента структуру справочника товаров придется привести к виду: ID, Klassificator_Type, Name, Parent_ID, Hierarchy1_ID, Hierarchy2_ID, Hierarchy3_ID. Сделать это можно либо с помощью view, либо физически перестроив таблицу справочника товаров. Я бы рекомендовал последний способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2005, 01:11 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
Описание задачи выглядит как классическое 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2005, 03:29 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
2 Андрей Прохоров: Сделать это можно либо с помощью view, либо физически перестроив таблицу справочника товаров. Этот справочник с иерархией является таблицей в учетной системе, и разработчики системы не позволяют менять ее структуру. Вьюшку тоже не сделать - используется экзотическая СУБД Progess. Есть только доступ через ODBC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2005, 11:59 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
используется экзотическая СУБД Progess. Есть только доступ через ODBC Наверное, на Gestori работаете или на чём-то подобном? Тогда, в любом случае, всё равно придётся данные выгружать в выделенное хранилище на нормальной СУБД. В таком случае, можно спроектировать под любое средство OLAP. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2005, 20:22 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
А в чём проблема? в MS AS 2k можно создать три parent-child измерения, у каждого свой Source Table Filter. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 11:10 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
Константин ЛисянскийВ таком случае, можно спроектировать под любое средство 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 22:38 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
МошаМне кажется что Вы все таки упускаете из виду вопрос правильного аггрегирования. В предложенном Вами решениях Балтика будет фигурировать в 3-х разных измерениях и соответсвенно не будет аггрегироваться как DISTINCT SUM. Не совсем так. Я имел в виду одно измерение товар, в котором три точки входа (три верхних уровня) и один общий уровень - товар. Для Microstrategy это будет одно измерение, поскольку в таблице фактов внешний ключ будет только один (ID товара). В таблице товаров будет три внешних ключа, ссылающихся на три разных таблицы (или иерархии таблиц). Ну, а агрегация в этом случае будет просто SUM. Если вам надо посчитать, сколько продали дешёвого российского пива, делаете фильтр на два атрибута-родителя товара (ценовой диапазон и страна производителя), третье не трогаете. SQL получится тривиальный. По крайней мере так я имел в виду. Очевидно, ошибся по поводу "любого" OLAP-средства. Однако в Cognos и в BO будет то же самое. При чём тут DISTINCT SUM я не понял. Может, объясните вкратце? Да, и неужели AS не умеет работать с разветвляющимися измерениями? С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 23:23 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
Константин ЛисянскийВ таблице товаров будет три внешних ключа, ссылающихся на три разных таблицы (или иерархии таблиц). Если бы было 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 00:09 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
Guest_3212 Андрей Прохоров: Сделать это можно либо с помощью view, либо физически перестроив таблицу справочника товаров. Этот справочник с иерархией является таблицей в учетной системе, и разработчики системы не позволяют менять ее структуру. Вьюшку тоже не сделать - используется экзотическая СУБД Progess. Есть только доступ через ODBC. Если строить кубы прямо на оперативной системе, то да, а если иметь все это в хранилище, то там можно сделать все как надо вам, а не разработчикам OLTP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 02:52 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
Mosha Откровенно говоря, AS2K действительно не очень хорошо справляется с такими моделями. Можно конечно сделать, но надо будет сильно постараться. А вот AS2005 - без проблем. Имел я с AS2K как раз почти такую задачу. Деиствительно пришлось попотеть. Достаточно нетривиальный дизайн измерения, посему с тривиальным клиентом в том кубе делать нечего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 02:58 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 03:04 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
МошаА вот как с этим справляется Cognos - действительно интересно В Cognos тоже, на самом деле, не так уж всё гладко. Там создать разветвляющееся измерение можно легко (правда, ограничение таково, что общий уровень может быть только один). Однако есть проблемы с наложением фильтров сразу на несколько веток в клиенте PowerPlay (то есть, дешёвое и светлое в нашем примере). Юрий меня поправит, если это не так. С уважением, Константин Лисянский http://lissianski.narod.ru P.S. Так уж получилось, что орфография заимствованных слов агрегация и атрибут такова, что в них по одной букве г и т. Впрочем, даже многие люди, постоянно говорящие на русском языке тоже делают такую ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 10:00 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
backfireТоже самое могу вам продемострировать и в AS2K. Тем самым осчастливите не одного участника форума. Можно на примере двух измерений времени: Год-неделя-день и год-месяц-день отношение неделя:месяц - many-to-many Либо регион-город-магазин и регион-територия-магазин. отношение город:територия - many-to-many, остальные one-to-many. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 10:37 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
Можно на примере двух измерений времени: Год-неделя-день и год-месяц-день отношение неделя:месяц - many-to-many. Тут не только неделя к месяцу many-to-many, но и год из одной иерархии не совпадает с годом из другой иерархии. Либо регион-город-магазин и регион-територия-магазин. отношение город:територия - many-to-many, остальные one-to-many. А как звучит постановка вопроса? Что на выходе вам желательно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 11:46 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
backfire Можно на примере двух измерений времени: Год-неделя-день и год-месяц-день отношение неделя:месяц - many-to-many. Тут не только неделя к месяцу many-to-many, но и год из одной иерархии не совпадает с годом из другой иерархии. Почему? Давайте для простоты считать что год начинается и заканчивается неполной неделей. т.е. года совпадают. backfire Либо регион-город-магазин и регион-територия-магазин. отношение город:територия - many-to-many, остальные one-to-many. А как звучит постановка вопроса? Что на выходе вам желательно? Например, продажи по териториальным единицам. Естественно без дублирования продаж магазинов. Moshaесли просто наивно создать иерархию с членами "Дешевое", "Российское", "Светлое" - то тогда будет double-counting на уровне All, т.к. пиво может быть и дешевым и светлым и российским ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 12:10 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
Например, продажи по териториальным единицам. Естественно без дублирования продаж магазинов. А у вас, что один магазин в нескольких территориях находится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 23:41 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
у меня как и у 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 10:57 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
Вообще то я пытался разделить две разные проблемы, но они почему то все время путаются :) Когда внутри измерения у атрибутов отношение 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 11:26 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
У меня, например, - вторая. Измерения: города и територии. Отношение между ними многие ко многим. В таблице фактов - только ключ измерения магазины. А в таблице магазинов уже хранятся его атрибуты: город и територия. В любом случае хотелось бы видеть решения г-на backfire по любой из двух проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 12:20 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
Dmitry BiryukovУ меня, например, - вторая. Измерения: города и територии. Отношение между ними многие ко многим. В таблице фактов - только ключ измерения магазины. А в таблице магазинов уже хранятся его атрибуты: город и територия. В любом случае хотелось бы видеть решения г-на backfire по любой из двух проблем. Тогда я что то не пойму в вашем дизайне. Вы же писали, что у вас 2 измерения (одно измерение с 2 мя иерархиями) 1. Регион-Город-Магазин 2. Регион-Територия-Магазин Обе иерархии (измерения) имеют одинаковый листовой уровень. Правильно? в любом случае у вас таблица фактов связана с таблицей магазинов по одному полю в одношении один-к-многим. Так что это подпадает под случай 1. (по Моше) Во вторых. Что такое Grand Totals? В MDX нет такой функции. (Приведите лучше MDX запрос, который возвращает вам неправильные суммы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 12:47 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
Moshabackfire - когда Вы говорили что решали это на AS2K, Вы имели в виду первую или вторую проблему ? Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights Я имел ввиду вторую проблему. В двух словах ее не изложить. Напишу более подробно на выходных. Сейчас времени нет даже 15 минут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 12:51 |
|
||
|
Хитрая иерархия (классификатор)
|
|||
|---|---|---|---|
|
#18+
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]) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 13:18 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=32856712&tid=1871505]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
137ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 500ms |

| 0 / 0 |
