|
Как в MS OLAP построить куб с выч. полем кол-ва зависящим от выбранной ед. изм.
|
|||
---|---|---|---|
#18+
Уважаемые коллеги! Помогите, плиз! Есть вот такая задачка. Нужно в OLAP кубе выводить поле с количеством продаж товара в выбранных пользователем единицах измерения товара. Для примера построим такую модель данных: 1. Таблица измерения "Товары" (типа Parent-Child) -Id_Child -Id_Parent -Name_Child 2. Таблица справочника "ЕдиницыИзмерения" -Id -Name 3. Таблица справочника "КоэффициентыПересчётаЕдиниц" -Id_Edinica -Id_Tovar -K Смысл в том что для пересчёта в нужную единицу достаточно поделить количество на коэффициент пересчёта выбранной единицы для данного товара. 4. Таблица фактов (для примера) -Id_Tovar -Kol Вопрос в том как построить OLAP куб для достижения такой задачи. Я попытался на основании справочника "КоэффициентПересчётаЕдиниц" сделать измерения. Но не могу понять как построить формулу вычисляемого поля, в котором бы количество делилось бы на нужный коэффициент. Есть здесь и ещё одна "засада". Товарное измерение представляет из себя иерархию, и коэффициенты пересчёта, в справочнике "КоэффициентПересчётаЕдиниц" будут заданы только для самых нижних (внутренних) элементов иерархии (т.е. товаров). Верхние же элементы иерархии – это группы, виды, классы товаров. Соответственно в ячейках на уровнях этих элементов необходимо не делить количество на не существующий коэффициент, а складывать ниже стоящие элементы. Подскажите пожалуйста как всё это сделать. Конечно может быть я много хочу от OLAP, а может просто не правильно построил модель данных. Буду благодарен за любой совет!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2002, 08:02 |
|
Как в MS OLAP построить куб с выч. полем кол-ва зависящим от выбранной ед. изм.
|
|||
---|---|---|---|
#18+
Самый простой способ решить Вашу проблему - это как Вы уже сказали создать вычисляемое измерение: with member measures.[nuzhnaya edinica] as ' iif( isleaf(Tovar.currentmember), measures.ЕдиницыИзмерения/КоэффициентыПересчётаЕдиниц, SUM(Descandants(Tovar.currentmember,Tovar.imya_tovara), [nuzhnaya edinica]) ) ' Пожалуй можно использовать Custom Rollup Formulas and Custom Member Formulas, но пока не вижу необходимости. Зачем Вы создаете Товар как Parent-Child? У Вас есть не симетричная иерархия товаров, т.е не все товары имеют Категорию, Под-категорию и т.д? Дело в том, что p/c не самый эффективный вид иерархий, если можете, то его не используйте. Ирина ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2002, 08:34 |
|
Как в MS OLAP построить куб с выч. полем кол-ва зависящим от выбранной ед. изм.
|
|||
---|---|---|---|
#18+
Спасибо за ответ! Да, теоретически эта иерархия может быть не симетричной. То есть, например, по некоторым группам товаров необходим подробный OLAP отчёт, а по некоторым - достаточно выводить информацию целиком о группе. Т.е. в справочнике "Товары", для данной группы вообще не будет подчинённых товаров. Ну и выше по иерархии соответственно. С одной стороны криво, с другой - жизненно :) Спасибо, ещё раз! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2002, 08:51 |
|
Как в MS OLAP построить куб с выч. полем кол-ва зависящим от выбранной ед. изм.
|
|||
---|---|---|---|
#18+
Тогда Вам возможно нужена Ragged иерархия, а не p/c. Если хотите можно в BOL почитать в статье: "Ragged Dimension Support" и "Dimension Hierarchies". П.С.Я не настаиваю, можете и п/ч использовать, а может и проще можно сделать. Ирина ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2002, 09:06 |
|
|
start [/forum/topic.php?fid=49&fpage=416&tid=1873630]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
others: | 280ms |
total: | 386ms |
0 / 0 |