SSAS:函数中指定的两个集具有不同的维度

时间:2015-10-01 16:18:20

标签: sql sql-server ssas mdx

我正在尝试运行以下MDX查询(我是新手):

WITH MEMBER [Measures].[Not Null SIGNEDDATA] AS IIF( IsEmpty( [Measures].[SIGNEDDATA] ), 0, [Measures].[SIGNEDDATA] )

SELECT 
{[Measures].[Not Null SIGNEDDATA]} ON COLUMNS,
{[Cuenta].[818000_001],[Cuenta].[818000_G02]} ON ROWS
 FROM [Notas_SIC]
 WHERE ([Auditoria].[AUD_NA],[Concepto].[CONCEPTO_NA],[Entidad].[CCB],
 [Indicador].[INDICADOR_NA],[Interco].[I_NONE],[Moneda].[COP],
 [Tiempo].[2010.01],[Version].[VERSION_NA])

其中818000_001是我的'Cuenta'维度的基本成员,而818000_G02是节点或聚合。我收到以下消息:

“函数中指定的两个集具有不同的维度”

我做错了什么?如果我将查询仅包含基本成员(多个)或仅使用不同的聚合,则结果可以正常进行。

提前致谢!

3 个答案:

答案 0 :(得分:0)

通过在WHERE子句中使用逗号,您尝试从不同维度创建成员集。你应该使用星号代替CROSSJOIN。

所以替换这个:

 WHERE ([Auditoria].[AUD_NA],[Concepto].[CONCEPTO_NA],[Entidad].[CCB],
 [Indicador].[INDICADOR_NA],[Interco].[I_NONE],[Moneda].[COP],
 [Tiempo].[2010.01],[Version].[VERSION_NA])

有了这个:

 WHERE ({[Auditoria].[AUD_NA],[Concepto].[CONCEPTO_NA],[Entidad].[CCB]} *
 {[Indicador].[INDICADOR_NA],[Interco].[I_NONE],[Moneda].[COP]} *
 {[Tiempo].[2010.01],[Version].[VERSION_NA]})

我添加了大括号,但我不确定它们是否绝对必需。

答案 1 :(得分:0)

这可能是你的问题:

{[Cuenta].[818000_001],[Cuenta].[818000_G02]} ON ROWS

您已将它们作为一组放置,但您只能使用相同的维度制作一组成员。从您的描述中可以看出[Cuenta].[818000_G02]被归类为不同的层次结构,这是意料之外的。

是否使用[Cuenta].[818000_G02]功能创建了Aggregate?你可以换用Sum功能吗?然后脚本可以工作吗?

(不是一个很好的答案 - 还有更多问题?)

答案 2 :(得分:0)

{[Cuenta].[818000_001],[Cuenta].[818000_G02]}

您的问题可能在于上述陈述。很明显,它们可能来自不同的层次结构(从你的例子中我不清楚,我来到下面)。

尝试用

替换上面的内容
{[Cuenta].[Hierarchy1].[818000_001]} * {[Cuenta].[Hierarchy2].[818000_G02]}

其中Hierarchy1Hierarchy2是这些成员所属的层次结构。 (如果您不确定,请尝试{[Cuenta].[818000_001]} * {[Cuenta].[818000_G02]})。我假设第二个聚合成员可能构建在不同的层次结构上,因此引擎会抛出错误。

始终使用完全限定的成员名称通常是一个好习惯,因为SSAS引擎必须花费更少的时间来搜索成员。