代码之家  ›  专栏  ›  技术社区  ›  McGinger

PowerBI随时间跟踪客户列表

  •  1
  • McGinger  · 技术社区  · 7 年前

    我有一份电力BI报告。我有一组要跟踪的客户。此客户集是在我们的开始日期通过筛选出几个列收集的;也就是说,他们在某一天都开始符合相同的标准。

    标准为10k以下的许可证数量,%。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周,等等)的表现如何,即使他们不再符合过滤器中的标准。我也有兴趣看到关于新客户的相同信息,这些新客户在随后几周加入,其统计数据与最初的标准相匹配。

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

    我的要求是否明确,是否可能?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Alexis Olson    7 年前

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

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