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

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

Задача такая:
Допустим есть 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
Прокидывание axis(1) при вычислении topsum or topcount в SSAS studio 2012
    #39597874
yakov40136
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yakov40136,

Сори при topsum, допустим больше 4000, а не 2, это для topcount
...
Рейтинг: 0 / 0
Прокидывание axis(1) при вычислении topsum or topcount в SSAS studio 2012
    #39597885
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Прокидывание axis(1) при вычислении topsum or topcount в SSAS studio 2012
    #39597894
yakov40136
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikkiv, Спасибо, давай предположим, что данные будут вытягиваться не в Excel, а в другой BI приложение.
...
Рейтинг: 0 / 0
Прокидывание axis(1) при вычислении topsum or topcount в SSAS studio 2012
    #39597911
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yakov40136,

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

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

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

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

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

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

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

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

Буду думать.

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

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


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