Filter Power BI/DAX:按添加的列值筛选汇总或分组

Filter Power BI/DAX:按添加的列值筛选汇总或分组,filter,powerbi,dax,summarize,Filter,Powerbi,Dax,Summarize,由于数据的机密性,我将尝试使用一些随机示例来描述我正在努力解决的问题。 假设我有一个事实表,其中包含Power BI中的发票数据。我需要计算过去12个月内销售额超过5万欧元的不同产品ID的数量,或者更准确地说,在选定日期之前的12个月内。同时,我需要能够将结果缩小到选定的国家、产品组和产品类别 我已经开始设置DATESBETWEEN的日期范围,如下所示: productsCount = VAR lastDay = IF(MAX('Calendar table'[Date]) > NOW(

由于数据的机密性,我将尝试使用一些随机示例来描述我正在努力解决的问题。 假设我有一个事实表,其中包含Power BI中的发票数据。我需要计算过去12个月内销售额超过5万欧元的不同产品ID的数量,或者更准确地说,在选定日期之前的12个月内。同时,我需要能够将结果缩小到选定的国家、产品组和产品类别

我已经开始设置DATESBETWEEN的日期范围,如下所示:

productsCount = 
VAR lastDay = IF(MAX('Calendar table'[Date]) > NOW(); NOW(); MAX('Calendar table'[Date]))
VAR firstDay = EDATE(lastDay; -12)
RETURN
但后来我迷路了:

CALCULATE(
    COUNTROWS('Sales');
    SUMMARIZE(
        'Sales';
        'Sales'[ProductID];
        "prodSales"; SUM('Sales'[EUR])
    );
    DATESBETWEEN('Sales'[Date]; firstDay; lastDay);
    ALLEXCEPT(
        'Sales';
        'Sales'[Product group];
        'Sales'[Product category];
        'Sales'[Country]
    );
    [prodSales] > 50000
)

问题是,在我计算行数之前,我需要能够按销售总额筛选汇总数据。

您可以在power query editor中创建一个汇总表,然后在dax中创建一个度量值,以筛选超过50k的结果。

我没有测试过这一点,但我认为在汇总后进行筛选时,类似的方法可能会起作用:

productsCount =
VAR lastDay =
    IF (
        MAX ( 'Calendar table'[Date] ) > NOW ();
        NOW ();
        MAX ( 'Calendar table'[Date] )
    )
VAR firstDay = EDATE ( lastDay; -12 )
RETURN
    COUNTROWS (
        FILTER (
            CALCULATETABLE (
                SUMMARIZE ( 'Sales';
                   'Sales'[ProductID];
                   "prodSales"; SUM ( 'Sales'[EUR] )
                );
                DATESBETWEEN ( 'Sales'[Date]; firstDay; lastDay );
                ALLEXCEPT (
                    'Sales';
                    'Sales'[Product group];
                    'Sales'[Product category];
                    'Sales'[Country]
                )
            );
            [prodSales] > 50000
        )
    )

总之,我们可以在汇总表之后进行过滤

我的输入表是

我正在写查询

App Downlaod Count = 

FILTER(
    SUMMARIZE(events_intraday,
    events_intraday[event_name],
    events_intraday[event_date],
    events_intraday[platform],
    events_intraday[stream_id],
    "Count",CALCULATE(
        COUNT(events_intraday[event_name]),
            FILTER(events_intraday,
                    (events_intraday[platform] = "ANDROID" || 
                    events_intraday[platform] = "IOS")
                )
            )
        ),
        events_intraday[event_name] = "first_open" && 
        (events_intraday[stream_id] = "1415470954" || 
        events_intraday[stream_id] = "1420775080")
    )
输出为


我不知道如何准备这样的表才能完成我需要的工作。我只需要向ALLEXCEPT添加几个过滤器(因为报告页面上有其他视觉效果和交叉过滤功能),它就可以工作了。谢谢:)