0

这是我的数据

SerialNumber  Reading  Date
A             4        10/30/2019
A             4        10/29/2019
A             3        10/28/2019
B             11       10/30/2019
B             9        10/29/2019
B             6        10/28/2019
C             25       10/30/2019
C             25       10/15/2019
C             25       10/13/2019
C             21       10/9/2019
C             21       10/3/2019

我需要能够创建一个度量或计算列,告诉我每个序列号上次更改的日期。所以我需要这个:

SerialNumber  Reading  Date          DateChanged
A             4        10/30/2019    10/28/2019
A             4        10/29/2019    10/28/2019
A             3        10/28/2019    10/28/2019
B             11       10/30/2019    10/29/2019
B             9        10/29/2019    10/29/2019
B             6        10/28/2019    10/29/2019
C             25       10/30/2019    10/9/2019
C             25       10/15/2019    10/9/2019
C             25       10/13/2019    10/9/2019
C             21       10/9/2019     10/9/2019
C             21       10/3/2019     10/9/2019

这是我尝试过的代码,但它只给了我每个序列号的最大日期

Column = CALCULATE(
MAX(
SMU_Lookup[Date]),
FILTER(
ALL(SMU_Lookup),
 SMU_Lookup[Reading] < MAX(SMU_Lookup[Reading])
 && SMU_Lookup[SerialNumber] = EARLIER(SMU_Lookup[SerialNumber])
)
)

提前致谢!

4

2 回答 2

0

我首先创建了一个度量(一个变量可能在这里也起作用)来保存每个 SerialNumber 的最大读数

MaxReading = CALCULATE(MAX(SMU_Lookup[Reading]),ALLEXCEPT(SMU_Lookup, SMU_Lookup[SerialNumber]))

然后我创建了计算列 LastUpdate 如下

LastUpdate = CALCULATE(MAX(SMU_Lookup[Date]), FILTER(ALLEXCEPT(SMU_Lookup, SMU_Lookup[SerialNumber]), SMU_Lookup[Reading] < [Max Reading]))

很简单,它适用于具有相同序列号和日期的多个读数的情况。

于 2019-10-31T22:13:19.497 回答
0

我认为这是您正在寻找的计算列:

DateChanged =
VAR max_date =
    MAXX (
        ALLEXCEPT ( 'SMU_Lookup', SMU_Lookup[SerialNumber] ),
        'SMU_Lookup'[Date]
    )
VAR reading_max_date =
    CALCULATE (
        MAX ( 'SMU_Lookup'[Reading] ),
        ALLEXCEPT ( 'SMU_Lookup', SMU_Lookup[SerialNumber] ),
        'SMU_Lookup'[Date] = max_date
    )
RETURN
    CALCULATE (
        MAX ( SMU_Lookup[Date] ),
        ALLEXCEPT ( 'SMU_Lookup', SMU_Lookup[SerialNumber] ),
        'SMU_Lookup'[Reading] <> reading_max_date
    )
  1. ALLEXCEPT 函数返回一个表,其中包含 SerialNumber 与当前行中的 SerialNumber 相同的行。
  2. MAXX 函数返回该表的最新日期。
  3. [VAR reading_max_date] 保存每个序列号的 max_date 读数。
  4. 在 RETURN 语句之后,在 Reading 与 reading_max_date 不同的地方计算 MAX(Date)。
于 2019-10-31T08:33:02.823 回答