【问题标题】:Why do i get Parser: The statement dialect could not be resolved due to ambiguity here?为什么我得到 Parser: 由于这里的歧义而无法解析语句方言?
【发布时间】:2013-03-02 20:52:20
【问题描述】:

我试图在不同的行上获得两个不同的 topcounts,我猜我在哪里想错了吗?

select{
([Measures].[Invoiced_DAm])
} on columns,

    topcount(
        [07 Prod].[Product_Descr].children
        ,10
        ,([Measures].[Invoiced_DAm], [19 Time].[Tr Year].&[2008])
    ),
    topcount(
        [07 Prod].[Product_Descr].children
        ,10
        ,([Measures].[Invoiced_DAm], [19 Time].[Tr Year].&[2009])
    ) on rows

【问题讨论】:

  • 在图 { } 之间包裹 2 个 topcount 可以达到我认为的效果!我刚刚在我的测试机器上尝试了一个类似的例子,它可以工作!
  • 我很高兴它现在可以工作了!如果你想知道为什么需要图表,我会在答案中解释!
  • 那将是最受欢迎的

标签: ssas ssms mdx


【解决方案1】:

如何让它工作只需在大括号{ }之间放置TOPCOUNT操作:

select{
([Measures].[Invoiced_DAm])
} on columns,
{
    topcount(
        [07 Prod].[Product_Descr].children
        ,10
        ,([Measures].[Invoiced_DAm], [19 Time].[Tr Year].&[2008])
    ),
    topcount(
        [07 Prod].[Product_Descr].children
        ,10
        ,([Measures].[Invoiced_DAm], [19 Time].[Tr Year].&[2009])
    )
} on rows

为什么?因为这是 MDX 区分集合的方式:只要明确列出元组,我们就需要用大括号将元组括起来。 TOPCOUNT 函数将返回(在这种情况下)Product 维度的前 10 个元组。

在您的情况下,TOPCOUNT(...), TOPCOUNT(...) 对 MDX 没有任何意义(两组或元组列表,用逗号分隔)。

{TOPCOUNT(...), TOPCOUNT(...)} 将告诉 MDX 您要显示来自两个 TOPCOUNT 语句的行集,因此您声明一个 Set of sets,它本身就是一个集合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 2015-10-06
    相关资源
    最近更新 更多