DAX指标 - 显示最佳日期的值

时间:2017-10-18 00:33:37

标签: powerbi dax

我在PowerBI(2017年10月发布)中有一些数据显示了一些太阳能电池板的快照输出,间隔为五分钟。

'Solar Output' table containing three columns: Production (KW): numeric, Date: date, Time: time

我现在有一个计算方法,通过得到当天的瞬时读数总和除以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)]) 

对于我的可视化,我想显示一个图表,显示当天不同时间的平均产量与当时最佳日期的产量,即[Avg Daily Production (KWh)]的最高价值日

到目前为止,这是我的工作:

使用

确定最佳日期
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]))

desired solution

我想要的图表看起来像这样,所选日期的平均产量为绿色,然后是另一系列显示在红色时刻的最佳日期的产量。

2 个答案:

答案 0 :(得分:2)

无法真正理解所涉及的计算,但我希望能得到你的要求。

所以你想在同一个图表上绘制两条线,一条始终是最佳日期的数据作为参考,另一条是从日期过滤器中选择的数据,对吗?

您实际上对上述信息的解决方案非常关闭。

我刚刚将您的DAX修改为:

import random
cards=["King", "Queen", "Jack", "Ace"]
outputs = []
k = 0
q = 0
j = 0
a = 0
for i in range(1000):
    x = random.sample(cards, 3)
    outputs.append(x[0])
for y in range(len(outputs)):
    if outputs[y] == 'King':
        k +=1
    elif outputs[y] == 'Queen':
        q += 1
    elif outputs[y] == 'Jack':
        j +=1
    elif outputs[y] == 'Ace':
        a +=1

print('No. kings =', k, 'No. Queens =', q, 'No. Jacks =', j, 'No. Aces =', a)

(不太确定如何计算中间测量值,因此您可能需要根据测量值进行调整)

是的,Production On Best Day (KW) = CALCULATE( SUM('Solar Output'[Average]), FILTER( ALL('Solar Output'[Date]), 'Solar Output'[Date] = VALUES('Best Day'[Date]) ) ) 会返回一个表格,因此您可以使用TOPN()获取日期值并将其用于比较。

结果:

result1 result2

答案 1 :(得分:0)

解决此问题的替代方法是使用MAXX()函数从TOPN()返回的表中获取标量值。

这适用于MAX()没有,因为MAXX()接受表表达式作为其第一个参数(表表达式是TOPN()函数的结果)MAX()只从现有表中获取列。

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

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