Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Прокидывание axis(1) при вычислении topsum or topcount в SSAS studio 2012 / 9 сообщений из 9, страница 1 из 1
07.02.2018, 07:42
    #39597870
yakov40136
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокидывание axis(1) при вычислении topsum or topcount в SSAS studio 2012
Доброе время суток дорогие форумчане.

Вопрос очень интересный, помогите его решить.

Задача такая:
Допустим есть 3 измерения:

1.Объекты:
Иерархия
1. Страна
2. Регион
3. Город
(атрибуты автомойки)
2. Период
Иерархия
1.Год.
2. Месяц.
3. День.
(без времени)

3. Статьи затрат
1. уровень 1
2. уровень 2
3. уровень 3
Связи (обычные)
Ну и таблица фактов с суммами статей( продажа, потери, зп, украли отдали ну и так далее)

Что необходимо.

Сделать так чтобы можно было выбрать любой разрез по измерениям и выдало 2 топовых строк (по сумме из таблице фактов) любого уровня измерения.
Т.е.
К примеру накидываю в Exsel строки измерение страны, статьи уровень 2 ,и колонки по периоду к примеру год.

Будет примерно так
Код: html
1.
2.
3.
 Статьи	                                2016	2017	2018
Россия	Материальные издержки	        6000	9000	10000
	Амортизация основных средств	5000	7000	24500


При исходных данных

Статьи
Материальные издержки 6000
Амортизация основных средств 5000
Издержки 4000
Обязательные начисления 3000
Оплата услуг сторонних организаций 2000
Прочие затраты 1000


MDX запрос через topsum можно написать

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select
{[MEASURES].[СУММА]} on 0,
 (
  topsum(
		 [Статьи затрат].[уровень 1].MEMBERS
                , 2
		, [MEASURES].[СУММА]
          ) 
		  )on 1
 FROM [КУБ] 



Но это статические данные получиться, так как Я указал разрез статей, а надо перехватывать выбранное измерение и выдавать топ по статьям.


В студии можно через
Код: sql
1.
CREATE DYNAMIC SET CURRENTCUBE.



Но не получается прокидывать axis (1), он ругается либо так

"Номер ошибки Функция ожидает для аргумента строчное или числовое выражение. Было использовано выражение набора кортежей.
"
либо
Была попытка сослаться на ось среза.

Народ помогите, ибо разберусь и понесу знания в народ)))

Спасибо.
...
Рейтинг: 0 / 0
07.02.2018, 08:03
    #39597874
yakov40136
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокидывание axis(1) при вычислении topsum or topcount в SSAS studio 2012
yakov40136,

Сори при topsum, допустим больше 4000, а не 2, это для topcount
...
Рейтинг: 0 / 0
07.02.2018, 08:27
    #39597885
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокидывание axis(1) при вычислении topsum or topcount в SSAS studio 2012
yakov40136,

В ручных MDX запросах можно, но вроде стандартно задача не решаема на уровне Excel/SSAS архитектуры, дело в Excel генераторе MDX, ты говоришь на оси дай мне набор Х, а запрос должен сам это заменить (обработать функцией) на набор Y (хоть и такой-же формы - но другой длинны, хотя данные урезать можно), по моему это только через написание своего слоя интерпретатора.

Расчёт что выбрал на axis(n) в конечном теле запроса происходит один раз и уже не настолько изменяемо повторными проходами (цепь From-Where-With-Axis(0)..(n)..+non empty/having) - можно ограничить данные через вынос в подзапрос(ы)/подкуб(ы) - но в Excel генераторе логика такого рода слишком примитивна (он только non empty ставит, having никогда не замечал)..

На уровне scope может и можно стереть данные (null) меньше topcount/topsum по всем возможным комбинациям атрибутов - тогда в Excel сработает non empty, теоретически может и получится реализовать (можно даже чтобы не влиять на всех пользователей сразу через виртуальное измерение с одним неагрегируемым атрибутом где defaultmember = Всё и остальные элементы типа TopCount2, TopCount5, TopCount10) - но на первый взгляд уж очень муторно.
...
Рейтинг: 0 / 0
07.02.2018, 08:45
    #39597894
yakov40136
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокидывание axis(1) при вычислении topsum or topcount в SSAS studio 2012
vikkiv, Спасибо, давай предположим, что данные будут вытягиваться не в Excel, а в другой BI приложение.
...
Рейтинг: 0 / 0
07.02.2018, 09:07
    #39597911
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокидывание axis(1) при вычислении topsum or topcount в SSAS studio 2012
yakov40136,

ну тогда просто - вот именно это BI приложение при генерации MDX (например логика через дополнительный параметр вместе с iif/case в том-же where на этапе синтеза из атрибутов/элементов именного набора который в результате попадает на ось1) и должно будет из к тому что пользователь яко-бы выбирает на осях применить функцию TopCount (на основе какой-то меры)
...
Рейтинг: 0 / 0
07.02.2018, 09:17
    #39597917
yakov40136
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокидывание axis(1) при вычислении topsum or topcount в SSAS studio 2012
vikkiv,

но в ssas, это реализовать возможно?
...
Рейтинг: 0 / 0
07.02.2018, 09:30
    #39597925
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокидывание axis(1) при вычислении topsum or topcount в SSAS studio 2012
yakov40136,

чисти scop-ом данные или грузи только те комбинации где нужный top(x) , второй вариант более затратен по перебору всех возможных случаев под правильные ключи, первый - можно начать с частичной чистки (под несколько выборочных атрибута) многомерного пространства куба.
на больших кубах с множеством измерений, атрибутов и групп мер - легче наверное на стороне MDX запроса сделать / с клиента прислать.

ну или чисто мне с утра пока ничего в голову не приходит, может здешние коллеги с нужным опытом как проснутся - что получше придумают.

позже попробую в MDX скрипте куба с Axis(n) поэкспериментировать, ругаться может из-за того что не получается у него на нужные элементы разбить, часто нужно через Axis().Item()...Item() делать (хотя на осях структуры бывают довольно сложные)
...
Рейтинг: 0 / 0
07.02.2018, 09:36
    #39597931
yakov40136
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокидывание axis(1) при вычислении topsum or topcount в SSAS studio 2012
vikkiv,

Выбрали Power BI, может в него mdx запрос кинуть.

А так не зная куда пользователь пошёл, я думаю нельзя вернуть топ по мере.

Были варианты.
1.Именованный запрос с точным указанием куда пользователь лезит.
2.Измерений много и у них разная иерархия, ssas как говориться не знает брода не хр*на туда не полезет, тут как и в 1 варианте, для каждого измерения.

Буду думать.

Спасибо.
...
Рейтинг: 0 / 0
07.02.2018, 09:47
    #39597940
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прокидывание axis(1) при вычислении topsum or topcount в SSAS studio 2012
yakov40136,

насколько я видел в профайлере - PowerBI DAX шлёт, даже в SSAS Multidimensional.
У него с кубами 2 варианта есть - Live Connection и Import,
второй - свою модель строить, связи настраивать и грузить всё в локальный файл
первый - там особо запрос не подредактируешь (недавно стало можно на уровне конкретного отчёта свои меры писать - но очень ограниченно)
а так да - именными set-ами на все случаи жизни не запасёшься даже если динамические, да и слишком запутанно для пользователя получится.
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Прокидывание axis(1) при вычислении topsum or topcount в SSAS studio 2012 / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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