首页 > 解决方案 > 上月分类值 Power BI

问题描述

我有一张看起来像这样的桌子。我正在尝试找到一种方法来查找每个帐户的状态更改,例如,如果当前月份的状态是注销但上个月是活动的,则标签应该是新注销的。在 Power BI 中可行吗?我找到了 PREVIOUSMONTH 但它只处理度量,而不是像我这样的分类值。 在此处输入图像描述

标签: powerbi

解决方案


这似乎是一个微不足道的问题,但我发现它在 PowerBI 中不容易解决。在展示我解决此问题的方法之前,我建议您在将数据加载到 PowerBI(即在数据源中)之前解决它。

如果这是不可能的,这是你应该做的:

(推荐)创建 T-1 数据列 == 列,其中有上一个日期进行比较(对你来说,它的上个月或日期):

T-1  date = 
VAR __acc_id = TABLE[account_id]
VAR __date = TABLE[date]

RETURN

CALCULATE(MAX(TABLE[date]),FILTER(ALL(TABLE), TABLE[account_id] = __acc_id && TABLE[date] < __date))

计算的过滤器部分“返回”表的一部分,它具有与当前行相同的 account_id 和小于当前行的日期。之后,我们只需选择最大日期,它应该是前一个。这样,我们可以找到每个帐户的最大先前日期。

如果您知道上一个日期是什么,请随时跳过此步骤。

在创建状态列本身之前,我将创建一个计算列,其中包含以前的状态。该列应计算如下:

t-1 status= 
var __acc_id = TABLE[account_id]
var tdate = TABLE[T-1  date] //CREATED IN PREVIOUS STEP OR YOUR PREVIOUS DATE METRIC(LIKE dateadd or previousmonth function)

return
CALCULATE(firstnonblank(TABLE[status]), FILTER(ALL(TABLE), TABLE[account_id]=__acc_id && table[date] = tdate))`

有了之前的状态列,我们现在有了当前和之前的状态列,这应该足以用简单的 if 语句正确标记“行”。计算出的列公式可能如下所示:

status_label = if(TABLE[status] == "Written off" && TABLE[t-1 status] == "active", "newly written off", "something else").

如果简单的 IF 还不够,请查看switch 语句

这一系列步骤应该可以解决您的问题,但我不得不承认,它的性能效率不高。最好在 PowerQuery 中解决它,但遗憾的是,我不知道如何解决。任何使用 PowerQuery 的解决方案都将受到高度赞赏。


推荐阅读