Ssas Sql Server Analysis Services中的计算模式(集合中最常见的数字)

Ssas Sql Server Analysis Services中的计算模式(集合中最常见的数字),ssas,mdx,Ssas,Mdx,有没有办法计算SSAS中的模式?我看到微软提供了中值、平均值、最大值和最小值的函数,但没有模式的函数。我需要在.net中编写一个用户定义的函数来实现这一点,还是有更简单的替代方法?这应该可以做到: create table #temp (value int) insert into #temp (value) values (1) insert into #temp (value) values (1) insert into #temp (value) values (1) insert in

有没有办法计算SSAS中的模式?我看到微软提供了中值、平均值、最大值和最小值的函数,但没有模式的函数。我需要在.net中编写一个用户定义的函数来实现这一点,还是有更简单的替代方法?

这应该可以做到:

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

我可以看到两种可能的选择。创建.Net存储过程是其中之一,但是调用这些过程会有一些开销,因此您不希望在太多的单元格上运行模式函数


另一个选项是,如果需要跨多个不同的值进行操作的数量不太多,则使用基于该数字的属性创建维度。然后您可以创建一个行计数度量,并通过执行TOPCOUNT…,获得模式,用数值表示维度上的1。

如何创建您感兴趣的数字的事实维度退化维度,然后对行数使用该维度,取顶部计数1


或者,您是在进行一个更一般的MDX计算,可以用于5月份的场景吗?

这被标记为MDX问题,而不是SQL问题。Sql Server Analysis Services中未使用TSQL,因此这无法解决我的问题。模式很容易在Sql Server甚至SSIS中进行计算,但我需要在SSAS中进行计算,以满足我的需要。我正在进行更一般的计算。我想出了这个,但它是如此缓慢,它是无法使用的。事实证明,在我的特定场景中,模式是值的50%以上,使其与中值相同,因此我继续使用中值,因为它是内置的。中位数[Billable Item].[Billable Item].[All].子项[Measures].[Contractual Adjustment-Billable Item]到目前为止,我无法使其足够快地用于生产,但在非常小的数据集上需要几分钟的时间。我想我需要使用EXISTS或其他类型的过滤器来加快速度。@Shane-如果这是一个计算成员,设置非空行为是值得一试的:如果没有设置,应该加快速度,但要小心,因为设置错误可能会产生错误的结果。