Я пытаюсь получить два разных счета в разных строках, думаю, я где-то ошибаюсь?

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
daniel_aren 14 Мар 2013 в 17:19
1
Я думаю, что если поместить 2 topcount между графиками {}, это поможет! Я только что попробовал аналогичный пример на своей тестовой машине, и он работает!
 – 
michele
14 Мар 2013 в 18:32
Я рад, что теперь он работает! Если вы хотите знать, зачем вам нужны графики, я объясню это в ответе!
 – 
michele
15 Мар 2013 в 12:18
Это было бы очень приятно
 – 
daniel_aren
15 Мар 2013 в 14:50

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 вернет (в данном случае) 10 верхних кортежей из измерения Product.

В вашем случае TOPCOUNT(...), TOPCOUNT(...) ничего не значит для MDX (два набора или список кортежей, разделенных запятой).

{TOPCOUNT(...), TOPCOUNT(...)} сообщит MDX, что вы хотите отобразить набор строк, полученных из двух операторов TOPCOUNT, поэтому вы объявляете набор наборов, который сам является набором.

1
michele 15 Мар 2013 в 15:07