在Powerbi中分组/汇总之前进行过滤

时间:2019-06-21 19:11:19

标签: powerbi grouping dax

在powerbi中进行分组和过滤时遇到一些麻烦。我想弄清楚这个问题,因此,我的目标是使所有内容都在DAX上完成,而不使用报告中的过滤器。我这样做是因为我将创建与此表相关的其他表。

所以,假设我有一张这样的桌子叫做sales:

Order Customer Product Date         Amount    Type
A001  John     TV      01/02/2019   200,00    ok
A002  Mark     Chair   10/02/2019   150,00    ok
A003  John     Bed     15/02/2019   50,00     Cancelled
A004  Mark     TV      17/02/2019   75,00     ok
A004  Susan    Table   19/02/2019   20,00     ok
A005  John     Pillow  21/02/2019   50,00     ok

我想得到另一个这样的表:

Customer   Orders  Last Order   First Order  Amount  Type
John       2       21/02/2019   01/02/2019   250,00  ok
John       1       15/02/2019   15/02/2019    50,00  Cancelled
Mark       2       17/02/2019   10/02/2019   225,00  ok   
Susan      1       19/02/2019   19/02/2019    20,00  ok

因此,如果我不考虑产品是否被取消,那么创建另一个表的公式将是:

GROUPBY = (Sales;
'sales'[Customer]
"orders"; countx(currentgroup();'sales'[order]);
"last_order";MAXX(currentgroup();'sales'[Date]);
"first_order";MINX(currentgroup();'sales'[Date]);
"Amount";SUMX(currentgroup();'sales'[Amount]))

问题是,如何对类型进行分组并了解订单是否被取消?

tks

2 个答案:

答案 0 :(得分:1)

就个人情况而言,我比较喜欢SUMMARIZECOLUMNS而不是GROUP BY,因为它不太冗长。

Summary =
SUMMARIZECOLUMNS (
    Sales[Customer],
    Sales[Type],
    "orders", COUNT ( Sales[Order] ),
    "last_order", MAX ( Sales[Date] ),
    "first_order", MIN ( Sales[Date] ),
    "Amount", SUM ( Sales[Amount] )
)

答案 1 :(得分:0)

您可以简单地将“类型”添加为分组字段:

Summarized Sales =
GROUPBY (
    'sales',
    'sales'[Customer],
    'sales'[Type],
    "orders", COUNTX ( CURRENTGROUP (), 'sales'[order] ),
    "last_order", MAXX ( CURRENTGROUP (), 'sales'[Date] ),
    "first_order", MINX ( CURRENTGROUP (), 'sales'[Date] ),
    "amount", SUMX ( CURRENTGROUP (), 'sales'[Amount] )
)

结果:

enter image description here