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]))
我有一份 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]))