PowerBI 随着时间的推移跟踪客户列表

PowerBI Track a list of Customers Over Time

我有一份 Power BI 报告。我有一组要跟踪的客户。这个客户集是通过在我们的开始日期过滤掉几个列来收集的;也就是说,他们都在某个日期开始匹配相同的标准。

标准是 Num Licenses under 10k, %Adherence below .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 周的报告中,因为他们不再符合条件。

我无法访问从中提取此数据的数据库;我只能更新报告本身和 none 的查询。

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

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

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

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

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