Расчет РЕЖИМА (наиболее распространенного числа в наборе) в Sql Server Analysis Services - PullRequest
1 голос
/ 12 января 2010

Есть ли способ рассчитать РЕЖИМ в SSAS? Я вижу, что Microsoft предоставляет функции для Median, AVG, Max и Min, но ничего для Mode. Нужно ли мне кодировать пользовательскую функцию в .net, чтобы это произошло, или есть более простая альтернатива?

Ответы [ 3 ]

1 голос
/ 23 февраля 2010

Я вижу две возможные альтернативы. Создание хранимого процесса .Net - один из них, но при его вызове возникают некоторые издержки, поэтому вы не захотите запускать функцию Mode для слишком большого числа ячеек.

Другой вариант, если существует не слишком большое количество различных значений, с которыми необходимо работать, - это создание измерения с атрибутом, основанным на числе. Затем вы можете создать меру количества строк и получить режим, выполнив TOPCOUNT (..., 1) над измерением с числовыми значениями.

0 голосов
/ 25 февраля 2010

Как насчет создания измерения фактов (вырожденного измерения) чисел, которые вас интересуют в режиме, а затем, используя его для подсчета строк, возьмите Top Count = 1?более общий расчет MDX, который вы могли бы использовать для сценариев май?

0 голосов
/ 12 января 2010

Это должно сделать это:

create table #temp (value int)
insert into #temp (value) values (1)
insert into #temp (value) values (1)
insert into #temp (value) values (1)
insert into #temp (value) values (2)
insert into #temp (value) values (2)
insert into #temp (value) values (3)
insert into #temp (value) values (3)
insert into #temp (value) values (3)
insert into #temp (value) values (3)
insert into #temp (value) values (3)
insert into #temp (value) values (3)
insert into #temp (value) values (4)


select value from (select top 1 count(*) as counts, value from #temp group by value order by count(*) desc) as myTemp
...