Power BI - 累计金额

时间:2018-06-06 19:16:02

标签: powerbi dax

我需要显示某些列的总和的累积值,但我需要将累积和与某些过滤器合并。

我有一些可以应用的过滤器(如City,Department,id和time period)。例如,此代码有效:

template <pieces P>
void find_moves ();

template <>
void find_moves<Pawn> ()
 { std::cout << "Case Pawn" << std::endl; }

template <>
void find_moves<Knight> ()
 { std::cout << "Case Knight" << std::endl; }

template <>
void find_moves<Bishop> ()
 { std::cout << "Case Bishop" << std::endl; }

template <>
void find_moves<Rook> ()
 { std::cout << "Case Rook" << std::endl; }

template <>
void find_moves<Queen> ()
 { std::cout << "Case Queen" << std::endl; }

template <>
void find_moves<King> ()
 { std::cout << "Case King" << std::endl; }

当我尝试添加过滤器时,我的编码会返回错误或返回从过滤的时间段开始的累计总和:例如,让我们说我在1月,2月,3月的值为10 ,4月为A市B部门。如果我选​​择显示3月和4月的价值,则应显示30和40。 但是,当前图表显示过滤时间段的累积值(并显示10和20)。

以下是我的尝试:

#include <iostream>
#include <utility>
#include <type_traits>

enum pieces { Pawn = 1, Knight, Bishop, Rook, Queen, King };

template <pieces P>
void find_moves ();

template <>
void find_moves<Pawn> ()
 { std::cout << "Case Pawn" << std::endl; }

template <>
void find_moves<Knight> ()
 { std::cout << "Case Knight" << std::endl; }

template <>
void find_moves<Bishop> ()
 { std::cout << "Case Bishop" << std::endl; }

template <>
void find_moves<Rook> ()
 { std::cout << "Case Rook" << std::endl; }

template <>
void find_moves<Queen> ()
 { std::cout << "Case Queen" << std::endl; }

template <>
void find_moves<King> ()
 { std::cout << "Case King" << std::endl; }

template <std::size_t Ps>
void bar ()
 { find_moves<pieces(1+Ps)>(); }

template <std::size_t ... Ps>
void foo (std::index_sequence<Ps...> const &)
 { (bar<Ps>(), ...); }

int main ()
 {
   foo(std::make_index_sequence<6U>{});
 }

我尝试过仅使用TableA中的数据,并尝试将TableB作为独立的时间段表使用。这是我的错误吗?

1 个答案:

答案 0 :(得分:0)

试试这个:

Cumulative_sum =
    CALCULATE(
        SUM(Table[ColumnA]) + SUM(Table[ColumnB]) + SUM(Table[ColumnC]);
        FILTER(ALL(Table);
            Table[TIME_PERIOD] <= MAX(Table[TIME_PERIOD]) &&
            Table[SITUATION] = "OK"
            )
         )

ALL(Table)会强制该指标忽略时间段过滤器。

要保留其他参数,您可能需要使用ALLEXCEPT

Cumulative_sum =
    CALCULATE(
        SUM(Table[ColumnA]) + SUM(Table[ColumnB]) + SUM(Table[ColumnC]);
        FILTER(ALLEXCEPT(Table, Table[City], Table[Department], Table[ID]);
            Table[TIME_PERIOD] <= MAX(Table[TIME_PERIOD]) &&
            Table[SITUATION] = "OK"
            )
         )
相关问题