27.10.2017, 08:06 | #1 |
Участник
|
OLAP Кубы, общее представление о кубах и немного конкретных вопросов
Приветствую.
Суть проблемы: Не достаточное понимание OLAP кубов, в контексте аксапты 2012 и VS 2013. Из-за этого возникает множество различных вопросов, ответы на которые не найти в мануалах, где показываются основы и стандартные/простейшие кубы. Задача: Модифицировать уже имеющийся рабочий куб(проект в VS2013). Проект куба создавался в VS, но использует представления и таблицы из аксапты. У меня получилось добавить несколько мер(если это так называется), потому что они уже имелись в представлении, но не получилось модифицировать представление в аксапте, чтобы создать свою собственную меру. Пока что, основные вопросы таковы: 1. Мера - это по сути поле таблицы или представления. Если оно есть, то и фильтровать в кубе его возможно. Так ли это? 2. "Представление источников данных" в проекте VS. Что оно из себя представляет? Как я понял, оно может генериться само средствами VS на основании представлений и таблиц из аксапты, но, в том проекте что у меня, присутствует множество представлений(view), которых в аксапте (и соответственно в SQL сервере) нет. Очевидно их создали в VS, но я не могу понять зачем. В каких случаях требуется создавать дополнительные представления данных в проекте, а не в аксапте? 3. Связи между table и view в "представлении источников данных". Для чего они нужны? Что они из себя представляют? (В ER диаграмме связи показывают отношения между таблицами, но тут ведь они не просто для вида?) |
|
27.10.2017, 12:40 | #2 |
Участник
|
Лучше, чем написано в справке от Microsoft у меня не получится
Общие сведения о кубах OLAP Однако для определенности, все-таки уточню Цитата:
Цитата:
Цитата:
Цитата:
Дополнительным "бонусом" являются свойства связей, которые определяют некие дополнительные критерии вычисления/отображения "мер" при тех или иных типах связей.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: mazzy (2), vizir (1). |
27.10.2017, 15:52 | #3 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
В первую очередь с той же целью. Показать по каким правилам (по каким полям) следует связывать источники данных между собой. Не отображают, а определяют! Ведь источник данных могут быть созданы и внутри куба. И связи между источниками могут быть не стандартными.
Дополнительным "бонусом" являются свойства связей, которые определяют некие дополнительные критерии вычисления/отображения "мер" при тех или иных типах связей. 1. При добавлении измерений в куб происходит автоматическая привязка по полям из связи. 2. В измерении можно выбирать атрибуты не только из основной таблицы измерения, но и из связанных с ней. |
|
27.10.2017, 16:05 | #4 |
Участник
|
Цитата:
Кроме того, вычислимые поля делать в Аксапте очень неудобно. Их гораздо проще написать уже в проекте. |
|
08.11.2017, 12:21 | #5 |
Участник
|
Спасибо всем за ответы. Теперь немного понятнее стало
Но теперь при создании меры, значение из представления в аксапте почему то умножается на число, которое я нигде не могу найти. То есть я создал дополнительное расчетное тестовое поле в представлении, в аксапте представление открывается и выводится верно, а если открывать через куб, то значение поля умножается на некое число. В чем может быть дело? |
|
08.11.2017, 12:58 | #6 |
MCTS
|
На целое число? Например, как вариант, если у вас данные в нескольких компаниях, а куб вы открываете без фильтра по компании.
__________________
I could tell you, but then I would have to bill you. |
|
|
За это сообщение автора поблагодарили: vizir (1). |
08.11.2017, 13:10 | #7 |
Участник
|
Цитата:
На целое число?
|
|
08.11.2017, 13:16 | #8 |
Участник
|
Да, спасибо! Фильтр по месяцам не был выставлен, сразу за 4 месяца считалось
|
|
13.11.2017, 13:14 | #9 |
Участник
|
Цитата:
на каждый enum создается представление с парой полей ключ - значение
|
|
20.11.2017, 13:51 | #10 |
MCTS
|
В измерении в атрибуте указать использование значение этого enum. Вообще для начала лучше пройдите стандартный туториал от Майкрософт по кубам, там все основные шаги и понятия хорошо описаны.
__________________
I could tell you, but then I would have to bill you. |
|
28.02.2018, 15:22 | #11 |
Участник
|
Вычисления (не знаю точно как называется) в кубе не подсчитываются в поле ИТОГ в экселе. Я так понимаю, что в поле итог должна быть сумма всех значений этого столбца, но если столбец состоит из этих вычислений, то формула применяется и к итоговому полю. Как сделать, чтобы итог выводился правильный? Или что гуглить?
п.с. вычисление делит одно измерение на другое. это расчетное поле, но по нему тоже нужно выводить итог. |
|
28.02.2018, 15:50 | #12 |
Участник
|
По хорошему в самом вычислении нужно прописать условие: если мы на нижнем уровне измерений - то считаем по формуле, если нет - то суммируем значения вычисления всех потомков.
__________________
Ivanhoe as is.. |
|
28.02.2018, 17:30 | #13 |
MCTS
|
Один метод правильно написал Ivanhoe.
Второй метод - создаем фиктивную меру в группе мер (по полю, которое всегда 0). В вычислениях в кубе задаем формулу для этой фиктивной меры на нижнем уровне измерений (читайте про Scope). На верхнем уровне она будет агрегироваться сама.
__________________
I could tell you, but then I would have to bill you. |
|
01.03.2018, 10:11 | #14 |
Участник
|
А как узнать что мы на нижнем уровне измерений? По какому признаку?
Пробовал создавать меру, и скоп пробовал использовать, пока никаких результатов. Только нули выводятся. |
|
01.03.2018, 11:44 | #15 |
Участник
|
__________________
Ivanhoe as is.. |
|
01.03.2018, 15:15 | #16 |
Участник
|
Теперь итог по нижнемуц уровню считается нормально, а Общий итог по всем нижним уровням снова кривой. Как его отловить?
|
|
01.03.2018, 15:25 | #17 |
Участник
|
Напишите тут код измерения
__________________
Ivanhoe as is.. |
|
02.03.2018, 07:52 | #18 |
Участник
|
SCOPE ([Measures].[Недогруз Тест Шт], [Номенклатура].[Код номенклатуры].members);
this = case when [Номенклатура].[Код номенклатуры].currentmember.level.ordinal>0 then IIF(IsEmpty([Measures].[Факт Отгрузка шт]) AND IsEmpty([Measures].[Факт Заявка шт]), NULL, (IIF(IsEmpty([Measures].[Факт Отгрузка шт]), 0 - [Measures].[Факт Заявка шт], (IIF(IsEmpty([Measures].[Факт Заявка шт]), 0, (IIF((([Measures].[Факт Отгрузка шт] - [Measures].[Факт Заявка шт]) < 0),([Measures].[Факт Отгрузка шт] - [Measures].[Факт Заявка шт]), 0 ))))))) else aggregate([Номенклатура].[Код номенклатуры].members) end ; END SCOPE; Общий итог считается по другому измерению - коду клиента. В нем на текущий момент вот этим скриптом считается итог по измерению номенклатур. А как одновременно считать итог и по другому измерению с учетом этого - никак не допру. |
|
02.03.2018, 10:04 | #19 |
Участник
|
Так тут явно есть анализ Номенклатуры, а где анализ остальных Dimensions? По идее нужно проверять isLeaf() на полном срезе.
__________________
Ivanhoe as is.. |
|
Теги |
cube, olap, vs2013, куб, кубы |
|
|