【问题标题】:Power BI/DAX: Filter SUMMARIZE or GROUPBY by added column valuePower BI/DAX:按添加的列值筛选 SUMMARIZE 或 GROUPBY
【发布时间】:2020-02-02 18:41:56
【问题描述】:

由于数据的机密性,我将尝试使用一些随机示例来描述我正在努力解决的问题。 假设我在 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
)

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

【问题讨论】:

    标签: filter powerbi dax summarize


    【解决方案1】:

    我尚未对此进行测试,但我认为这样的事情可能会在您汇总后进行过滤:

    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
            )
        )
    

    【讨论】:

    • 我只需要向 ALLEXCEPT 添加更多过滤器(因为报告页面上的其他视觉效果和交叉过滤功能),它就可以工作。谢谢你:)
    【解决方案2】:

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

    我的输入表是

    我正在写查询

    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")
        )
    

    输出是

    【讨论】:

      【解决方案3】:

      您可以在 power 查询编辑器中创建一个汇总表,然后在 dax 中创建一个度量来过滤超过 50k 的结果。

      【讨论】:

      • 我不知道如何准备这样的桌子才能做我需要做的事情。
      猜你喜欢
      • 2020-11-19
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      相关资源
      最近更新 更多