【问题标题】:How to Use NOT IN Query in PowerBI DAX如何在 PowerBI DAX 中使用 NOT IN 查询
【发布时间】:2020-07-08 10:58:51
【问题描述】:

我已将 Order 表从 SQL 导入 PowerBI

订单表有如下数据。

ID   OrderNo   CustomerNo    OrderDate
1      DC001      1001       2020-06-01
1      DC002      1002       2020-06-09
1      DC003      1003       2020-06-10

注意:我想在 PowerBI DAX 中执行下面的查询

Select Count(Distinct CustomerNo) 
From [order] where orderdate >= '2020-06-08' and orderdate <= '2020-06-14' 
And CustomerNo 
Not in (select CustomerNo from [order] where orderdate < '2020-06-08')

我在 DAX 中尝试过以下代码

MEASURE NOT IN = 
VAR indexList =SELECTCOLUMNS (
    FILTER('Order','Order'[OrderDate] > [RangeFromDate]),"Distict", DISTINCTCOUNT ('Order'[CustomerNo]))
RETURN
    SUMMARIZE (
    FILTER('Order',
        NOT ('Order'[CustomerNo]) IN indexList),
        "Count",Count ( 'Order'[CustomerNo] )
    )

注意:[RangeFromDate] 是 MEASURE 从切片器动态加载起始日期。

但不适合我。 请帮我在 PowerBI DAX 中解决这个问题

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    EXCEPT 函数可以帮助解决这个问题。它将接受两个表作为输入,从第一个表中获取值,并从第二个表中删除这些值。我使用了一个汇总函数来确保这些表中的每一个都是不同的(第二个表还包括来自您的 SQL 子查询的过滤器)。由于它们是不同的,我可以只对结果表进行 COUNTROWS 来获取客户数。

    RemainingCustomers = 
    COUNTROWS(
        EXCEPT(
            SUMMARIZE(Orders, [CustomerNo]), 
            SUMMARIZE(FILTER(Orders, Orders[OrderDate] < DATEVALUE("2020-06-08")) , [CustomerNo])
        )
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多