我需要显示某些列的总和的累积值,但我需要将累积和与某些过滤器合并。
我有一些可以应用的过滤器(如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作为独立的时间段表使用。这是我的错误吗?
答案 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"
)
)