DAX 度量 - 显示最佳日的值

DAX measure - show values from best day

我在 PowerBI(2017 年 10 月版)中有一些数据显示某些太阳能电池板以 five-minute 间隔的快照输出。

我目前有一个方法,通过获取当天的瞬时读数的总和除以 12(因为每小时有 12 个读数)来计算每天的总产量,然后显示每天的平均值当前上下文中任何时期的金额:

Avg Daily Production (KWh) = 
    AVERAGEX(SUMMARIZE('Solar Output', 'Solar Output'[Date], "Daily Production (KWh)", SUM('Solar Output'[Production (KW)]/12), [Daily Production (KWh)]) 

对于我的可视化效果,我想展示一个图表,显示一天中不同时间的平均产量与最佳一天当时产量的比较,即 [=13 值最高的那一天] =].

这是我目前的工作:

使用

识别最高日
Best Day = TOPN(1, SUMMARIZE('Solar Output', 'Solar Output'[Date], "Daily Production (KWh)", [Avg Daily Production (KWh)]), [Daily Production (KWh)], DESC)

但这会产生一行,而不是标量,我不太清楚如何只获取此日期并将其用作像这样的度量的过滤器:

Production On Best Day (KW) = 
    CALCULATE(SUM([Production (KW)]), FILTER(ALL('Solar Output'[Date]), 'Solar Output'[Date] = [Best Day]))

我想要的图表看起来像这样,选定日期的平均产量用绿色表示,然后另一个系列显示最佳日期那些时间的产量用红色铅笔表示。

无法真正理解所涉及的计算,但我希望我能满足您的要求。

所以你想在同一张图表上画两条线,一条总是最好的一天的数据作为参考,另一条是从日期过滤器中选择的数据,对吗?

根据上面给出的信息,您实际上已经很接近解决方案了。

我刚刚将您的 DAX 修改为:

Production On Best Day (KW) = 
CALCULATE(
    SUM('Solar Output'[Average]),
    FILTER(
        ALL('Solar Output'[Date]),
        'Solar Output'[Date] = VALUES('Best Day'[Date])
    )
)

(不太清楚你是如何计算你的中间措施的,所以你可能需要根据你的措施进行调整)

是的,TOPN() returns一个table,所以你可以使用VALUES('Best Day'[Date])获取日期值并用于比较。

结果:

解决此问题的替代方法是使用 MAXX() 函数从 TOPN().

返回的 table 中获取标量值

这在 MAX() 不适用的地方有效,因为 MAXX() 接受 table 表达式 作为其第一个参数(table 表达式是 TOPN() 函数的结果),其中 MAX() 仅采用现有 table 中的列。

Best Day = MAXX(TOPN(1, 
                     SUMMARIZE(ALL('Solar Output'), 
                               'Solar Output'[Date], 
                               "Daily Production (KWh)", 
                               [Avg Daily Production (KWh)]), 
                     [Daily Production (KWh)], 
                     DESC), 
                [Date])

这种方法的好处是它应该在没有计算 table 支持的 DAX 版本中工作(例如 SSAS 2014、Excel 2013)。