【问题标题】:Filter function does not work properly, not filtering (DAX)过滤功能不能正常工作,不能过滤(DAX)
【发布时间】:2020-09-01 09:41:23
【问题描述】:

我的过滤功能有问题。

我希望我的代码计算一个列,说明该行是否是治疗师的回头客 - 因此必须有一个更早的个人资料 ID(工作编号)、更早的客户 ID、更早的预订日期和订单状态必须是活动的。这些东西意味着它是回头客,并且是特定治疗师的回头客(个人资料 ID)

ReturningCforT = IF(COUNTROWS(
FILTER(ALL(orders),
    orders[Column1.Profile_ID] =EARLIER(orders[Column1.Profile_ID]) &&
    orders[Column1.Customer_ID] = EARLIER(orders[Column1.Customer_ID]) &&
    orders[Column1.OrderStatus] = "Active" &&
    orders[Column1.BookingDate] > EARLIER(orders[Column1.BookingDate])
    
)) >= 1, "Yes", "No")

目前我可以在我新创建的列中看到“是”,但该行上的 orderstatus 未处于活动状态,这意味着 orderstatus = Active 过滤器当前未工作。

我尝试将所有函数替换为值函数,结果相同。

谁能帮我解决这个问题?谢谢。

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    您的过滤器正在查看整个表格并检查每一行的每个条件。由于存在满足所有条件的行,因此即使该行不是当前行,它也会返回“是”。

    我认为您打算将该条件应用于当前行,而不是任何行,因此我建议将其移到 FILTER 之外。

    ReturningCforT =
    IF (
        orders[Column1.OrderStatus] = "Active" &&
        COUNTROWS (
            FILTER (
                ALL ( orders ),
                orders[Column1.Profile_ID] = EARLIER ( orders[Column1.Profile_ID] )
                    && orders[Column1.Customer_ID] = EARLIER ( orders[Column1.Customer_ID] )
                    && orders[Column1.BookingDate] > EARLIER ( orders[Column1.BookingDate] )
            )
        ) >= 1,
        "Yes",
        "No"
    )
    

    【讨论】:

    • 谢谢,这对我帮助很大。我最终用于返回客户的代码是这样的:ReturningCustomer = VAR custID = orders[Column1.Customer_ID] VAR OrderID = orders[Column1.Order_ID] VAR orderCount = CALCULATE (COUNTROWS (orders), FILTER (orders, custID = orders[ Column1.Customer_ID] && OrderID > orders[Column1.Order_ID] && orders[Column1.OrderStatus] = "Active" ) ) IF (orderCount >= 1 && orders[Column1.OrderStatus] = "Active", "Yes", "没有”)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 2017-01-23
    • 2021-09-01
    • 1970-01-01
    相关资源
    最近更新 更多