首页 > 解决方案 > PowerBI DAX - 根据多个条件识别第一个实例

问题描述

使用 DAX 识别记录的第一个实例

我面临着试图识别数据库中某人(由 ID 列标识)第一次购买产品的第一个实例。该人可能在不同的日子多次购买该产品,或者在同一天购买不同的产品。我提出了一个让我到达那里的 excel 公式,但在转换为 DAX 时遇到了麻烦。

=COUNTIFS(ID,ID,PurchaseDate,"<="&PurchaseDate,Product,Product)

哪个导致“一审”中的值正确?柱子。

在此处输入图像描述

理想情况下,我不必对值进行硬编码,因为我希望将来使用“产品”列作为参数。如果除了在 DAX 中翻译之外还有其他建议,那也将不胜感激!(IE 使用过滤器,或 PowerBI 中的其他工具)

提前致谢!

标签: powerbidaxcountif

解决方案


这与我对另一个问题的回答非常相似(您可以在此处找到)。

在那个问题中,请求是查看给定行的标准(产品、年份等)的行数。我们可以稍微修改它以使其在您的问题中起作用。

这是我在上面链接的答案中提供的公式。基本概念是使用EARLIER函数从行中获取值并将其传递给过滤器语句。

Running Count = 
    COUNTROWS(
        FILTER(
            'Data',
            [ProductName] = EARLIER([ProductName]) &&
            [Customer] = EARLIER([Customer]) &&
            [Seller] = EARLIER([Seller]) &&
            [Year] <= EARLIER([Year])
        )
    )

我对您的问题的建议是通过简单地检查运行计数是否为 1 将其创建为 TRUE/FALSE 标志。该公式将评估为布尔标志。

First Instance = 
    COUNTROWS(
        FILTER(
            'Data',
            [ID] = EARLIER([ID]) &&
            [Product] = EARLIER([Product]) &&
            [Purchase Date] <= EARLIER([Purchase Date])
        )
    ) = 1

推荐阅读