Power BI中基于时间间隔条件的次高差异秒数获取问题求助
Power BI度量值修正:获取间隔至少2秒的次高差异秒数
我是Power BI新手,在Power BI Desktop中有如下时间序列数据表(实际含更多传感器及数据点):
| Seconds | Sensor | Value |
|---|---|---|
| 0 | 2887 | 23 |
| 1 | 2887 | 25 |
| 2 | 2887 | 42 |
| 3 | 2887 | 45 |
| 0 | 2879 | 87 |
| 1 | 2879 | 56 |
| 2 | 2879 | 54 |
| 3 | 2879 | 34 |
| 0 | 2845 | 64 |
| 1 | 2845 | 63 |
| 2 | 2845 | 46 |
| 3 | 2845 | 97 |
我的目标:
- 计算每秒所有传感器的平均值,得到4个平均值;
- 计算每2秒的移动平均;
- 计算连续秒数间的差异;
- 获取差异值最高的秒数(0、1、2或3);
- 获取次高差异值的秒数,要求该秒数与最高差异秒数间隔至少2秒(如最高为0,则次高需≥2)。
目前已编写的度量值(AverageValuePerSecond、MovingAvgeragePer2Seconds、DifferenceBetweenAverages2Seconds、MaxMovingAverageSecond)均正常工作,但第5步的NextMaxMovingAverageSecond度量值无法正常运行,需修正其条件逻辑。
现有问题度量值:
NextMaxMovingAverageSecond = VAR FirstMaxSecond = [MaxMovingAverageSecond] RETURN CALCULATE( MAX('Table'[Seconds ]), FILTER( ALL('Table'[Seconds ]), [DifferenceBetweenAverages10econds] > 0 && 'Table'[Seconds ] > FirstMaxSecond + 2 && 'Table'[Seconds ] <> FirstMaxSecond ) )
问题分析
原度量值存在3个核心问题:
- 度量值名称拼写错误:
DifferenceBetweenAverages10econds应为DifferenceBetweenAverages2Seconds; - 间隔条件不完整:仅考虑了
秒数>最高秒数+2的情况,未覆盖如最高秒数为3时,次高需≤1的场景; - 取值逻辑错误:直接取最大秒数,无法保证对应次高差异值。
修正后的度量值
NextMaxMovingAverageSecond = VAR FirstMaxSecond = [MaxMovingAverageSecond] -- 筛选出与最高秒数间隔至少2秒的有效秒数 VAR ValidSeconds = FILTER( ALL('Table'[Seconds]), ABS('Table'[Seconds] - FirstMaxSecond) >= 2 && [DifferenceBetweenAverages2Seconds] > 0 ) -- 对有效秒数按差异值降序排名 VAR RankedValidSeconds = ADDCOLUMNS( ValidSeconds, "DiffRank", RANKX(ValidSeconds, [DifferenceBetweenAverages2Seconds],, DESC, Dense) ) -- 返回排名第2的秒数(即次高差异值对应的秒数) RETURN MAXX(FILTER(RankedValidSeconds, [DiffRank] = 2), 'Table'[Seconds])
修正说明
- 修正了度量值名称的拼写错误;
- 用
ABS(秒数差)>=2覆盖所有间隔至少2秒的场景,逻辑更全面; - 通过
RANKX对有效秒数按差异值排序,确保取到的是次高差异值对应的秒数,而非单纯最大秒数。
内容的提问来源于stack exchange,提问作者Sarah
相关产品推荐
相关产品推荐

