【问题标题】:PowerBI Track a list of Customers Over TimePowerBI 跟踪一段时间内的客户列表
【发布时间】:2018-03-08 08:59:16
【问题描述】:

我有一个 Power BI 报告。我有一组要跟踪的客户。该客户集是通过在我们开始日期的几列中过滤而收集的;也就是说,它们都在某个日期开始匹配相同的条件。

标准是 Num Licenses 低于 10k,%Adherence 低于 0.1,Num Features >= 3。

在数据库中,如下所示:

╔═══════════════╦═══════════╦═════════════╦════════════╦═════════════╗
║ Customer Name ║ StartDate ║ NumLicenses ║ %Adherence ║ NumFeatures ║
╠═══════════════╬═══════════╬═════════════╬════════════╬═════════════╣
║ Customer A    ║ 2/21/2018 ║        6000 ║ .08        ║           5 ║
║ Customer B    ║ 2/21/2018 ║        4400 ║ .01        ║           4 ║
║ Customer C    ║ 2/21/2018 ║        2150 ║ .07        ║           4 ║
╚═══════════════╩═══════════╩═════════════╩════════════╩═════════════╝

我想随着时间的推移跟踪这组客户,所以我想看看这组客户下周的表现如何:

在数据库中,如下所示:

╔═══════════════╦═══════════╦═════════════╦════════════╦═════════════╗
║ Customer Name ║ StartDate ║ NumLicenses ║ %Adherence ║ NumFeatures ║
╠═══════════════╬═══════════╬═════════════╬════════════╬═════════════╣
║ Customer A    ║ 2/28/2018 ║        6000 ║ .11        ║           7 ║
║ Customer B    ║ 2/28/2018 ║        4400 ║ .01        ║           4 ║
║ Customer C    ║ 2/28/2018 ║        2150 ║ .07        ║           2 ║
╚═══════════════╩═══════════╩═════════════╩════════════╩═════════════╝

因此,使用我当前的标准作为 PowerBI 中的过滤器,客户 A 和 C 将不会出现在第 2 周的报告中,因为他们不再符合标准。

我无权访问从中提取此数据的数据库;我只能更新报告本身,不能更新任何查询。

我有兴趣了解第 1 周的一组客户在第 2 周(以及第 3 周等)的表现如何,即使他们不再符合过滤器中的条件。我也有兴趣看到在随后几周加入的新客户的相同信息,其统计数据与初始标准相匹配。

我的问题是,如果客户在特定日期符合条件,我不确定如何计算标记客户的列,因为这似乎只过滤了该日期的所有数据。

我问的清楚吗,有可能吗?

【问题讨论】:

    标签: reporting powerbi dax


    【解决方案1】:

    设置检查每行条件的计算列很简单:

    Criteria = IF(Customers[NumLicenses] < 10000 &&
                  Customers[Adherence] < 0.1 &&
                  Customers[NumFeatures] >= 3,
                  "Meets", "Fails")
    

    鉴于此列,您可以创建一个新的计算列来检查客户是否满足条件:

    CriteriaEverMet =
        CALCULATE(MAX(Customers[Criteria]),
                  ALLEXCEPT(Customers, Customers[CustomerName])) = "Meets"
    

    这是另一个给出相同结果的公式:

    CriteriaEverMet =
        "Meets" IN CALCULATETABLE(VALUES(Customers[Criteria]),
                                  ALLEXCEPT(Customers, Customers[CustomerName]))
    

    【讨论】:

    • 抱歉今天和cmets混淆了,我的网络一直不可靠。回顾一下,对于 if 语句,我有一个与您的计算列非常相似的计算列,它工作得很好。添加 CriteriaEverMet 列会在 Customers[Criteria] 和 Customers[CriteriaEverMet] 之间创建循环依赖关系。
    • @McGinger 这些公式在我的测试中运行良好。您的问题陈述中必须有一些未指定的计算列或依赖项。
    • 可以理解——再次感谢您的帮助。当我得到它的工作时,我会摆弄和更新。
    猜你喜欢
    • 2017-10-17
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    相关资源
    最近更新 更多