Сумма DAX за все годы, но не за текущий год - PullRequest
0 голосов
/ 16 марта 2020

У меня есть запрос DAX, который я выполняю через SSRS для получения годового итогового набора результатов с несколькими группами, фильтрами, показателями и т. Д. c. но для вопроса я буду использовать упрощенную версию.

Это выглядит так:

EVALUATE 
SUMMARIZECOLUMNS(
'Years'[Year],
'Currency'[CurrencyName],
"SalesAmount", [SalesAmount] 
)
2017, EUR, 1000000  
2018, EUR, 1000000  
2019, EUR, 1000000  
2020, EUR, 1000000  
2017, USD, 500000
2018, USD, 500000
2019, HKD, 1000000
2020, HKD, 1000000

Пока все работает нормально.

Однако у меня есть требование отчетности к итоговой сумме по каждой валюте. Однако общая сумма не должна включать текущий год (который я могу передать из параметра при необходимости)

Чтобы повторить то, что уже делает текущий отчет на основе SQL, в идеале я также хотел бы добавить порядок за последовательностью к набору результатов, чтобы отформатировать отчет. Набор конечных результатов будет выглядеть следующим образом:

1, 2017, EUR, 1000000  
2, 2018, EUR, 1000000  
3, 2019, EUR, 1000000  
4, Total, EUR, 4000000 
5, 2020, EUR, 1000000  

1, 2017, USD, 500000    
2, 2018, USD, 500000  
3, Total, USD, 1000000  

1, 2019, HKD, 1000000  
2, Total HKD, 1000000  
3, 2020, HKD, 1000000

SQL, который делает это, довольно запутанный, поэтому я полагаю, что это невозможно в DAX, но если у кого-то есть какие-либо предложения по подобным примерам, подобным этому что они могут предложить, я буду признателен,

Заранее спасибо, W

Ответы [ 2 ]

1 голос
/ 16 марта 2020

Это даст вам общее количество строк в качестве новой вычисляемой таблицы:

Totals =
VAR CurrYear =
    YEAR ( TODAY () )
RETURN
    SUMMARIZECOLUMNS (
        'Currency'[Currency],
        "SalesAmount", CALCULATE ( [SalesAmount], 'Years'[Year] < CurrYear ),
        "Index", CALCULATE ( COUNT ( 'Years'[Year] ), 'Years'[Year] < CurrYear ) + 1
    )

Могу поспорить, вы можете выяснить, как объединить это с таблицей, которую вы уже получили, чтобы получить то, что объединенной таблицы вы хотите .

0 голосов
/ 16 марта 2020

Вы можете попробовать что-то вроде этого:

Cumulative =
VAR currYear =
    SELECTEDVALUE ( 'Table'[Date].[Year] )
RETURN
    SUMX (
        FILTER ( ALLSELECTED ( 'Table' ), 'Table'[Date].[Year] < currYear ),
        'Table'[Value]
    )
...