Ssas 永远运行的简单计算成员-MDX

Ssas 永远运行的简单计算成员-MDX,ssas,mdx,Ssas,Mdx,我在MDX(SSAS 2014)方面面临着一个非常奇怪的问题,最简单的计算成员要花很长时间才能执行。有人能帮我理解为什么我要面对这个问题吗。如果我不使用计算成员,一切工作都很快,结果在几秒钟内就出来了。当我删除Producer属性时,查询性能良好 下面是完整的查询 与 成员措施日期为(“[政策生效日期][年-月][日期].&[2018-01-04T00:00:00]”) 会员机构以总金额计量YTDPremium(YTD(STRTOMEMBER(Measures.AsOfDate)),[Measu

我在MDX(SSAS 2014)方面面临着一个非常奇怪的问题,最简单的计算成员要花很长时间才能执行。有人能帮我理解为什么我要面对这个问题吗。如果我不使用计算成员,一切工作都很快,结果在几秒钟内就出来了。当我删除Producer属性时,查询性能良好

下面是完整的查询

与 成员措施日期为(“[政策生效日期][年-月][日期].&[2018-01-04T00:00:00]”)

会员机构以总金额计量YTDPremium(YTD(STRTOMEMBER(Measures.AsOfDate)),[Measures].[writed Premium]) 选择非空 { 钇镉

}在列上,非空 { ( [程序].[程序名].[程序名]

,[保险公司].[保险公司名称].[保险公司名称]

,[业务范围][业务范围][业务范围]

,[Producer].[Producer Name].[Producer Name]

) }成排
从[Premium]

尝试了解以下部分在查询中的作用

非空{([Program].[Program Name].[Program Name]

,[保险公司].[保险公司名称].[保险公司名称]

,[业务范围][业务范围][业务范围]

,[Producer].[Producer Name].[Producer Name]

)行上的}

在上面的MDX中,您告诉服务器使用“程序”、“业务线”和“制作人名称”的所有值的叉积。假设你有4个节目值,3个业务线值和2个制作人名称值。总组合为4*3*2=24

现在,“非空”将删除数据集中不存在的任何组合。这是通过删除列值中具有“Null”值的所有行来完成的

您的度量值是返回值,无论该组合是否存在。只有在组合有效的情况下,才能修改Calculatedmeasure以返回值。这可以通过检查该组合的实际测量值来实现

编辑:基于以下示例基于注释

在下面的示例中,我试图获取互联网销售额类别和组成部分

select 
{ [Measures].[Internet Sales Amount]  } 
on columns,
(
[Product].[Category].[Category],
[Customer].[Country].[Country]
)
on rows 
from [Adventure Works]
结果

现在将“nonempty”添加到查询中并观察结果

结果

现在,让我们添加返回“hello”的计算度量值。请注意非空子句是如何无效的

现在修改代码,使计算的度量值检查其他度量值是否为null

with member measures.t as 
case when [Measures].[Internet Sales Amount] = null then null else "hello" end

select 
{ [Measures].[Internet Sales Amount] ,measures.t }
on columns,
non empty
(
[Product].[Category].[Category],
[Customer].[Country].[Country]
)
on rows 
from [Adventure Works]
结果


底线:由于交叉积,您的结果太大,SSAS很难处理。

我也尝试删除非空项,但查询仍在运行。如何修改查询以检查度量值是否存在?请提供一个mdx示例或修改现有示例。这真的很有帮助。谢谢。那么,如何避免交叉积并快速得出结果呢。我在查询中保持非空。当[measures].[Internet Sales Amount]=null,然后为null,否则为“hello”end时,将这行代码“与member measures.t保持一致”是什么意思。任何how非空子句都将对其进行筛选。Sry i对MDX来说太陌生了。上面这行的意思是只有当您有[Measures].[Internet Sales Amount]的值时才返回“hello”。这样做有意义吗?但是通过添加这一点并不会对我的查询性能产生任何影响。您有什么建议来优化所提供的查询,以便它至少可以带来结果。目前它还在运行。我需要查看您的查询吗?