我正在尝试运行以下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是节点或聚合。我收到以下消息:
“函数中指定的两个集具有不同的维度”
我做错了什么?如果我将查询仅包含基本成员(多个)或仅使用不同的聚合,则结果可以正常进行。
提前致谢!
答案 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]}
其中Hierarchy1
和Hierarchy2
是这些成员所属的层次结构。 (如果您不确定,请尝试{[Cuenta].[818000_001]} * {[Cuenta].[818000_G02]}
)。我假设第二个聚合成员可能构建在不同的层次结构上,因此引擎会抛出错误。
始终使用完全限定的成员名称通常是一个好习惯,因为SSAS
引擎必须花费更少的时间来搜索成员。