我在PowerBI(2017年10月发布)中有一些数据显示了一些太阳能电池板的快照输出,间隔为五分钟。
我现在有一个计算方法,通过得到当天的瞬时读数总和除以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]))
我想要的图表看起来像这样,所选日期的平均产量为绿色,然后是另一系列显示在红色时刻的最佳日期的产量。
答案 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()
获取日期值并将其用于比较。
结果:
答案 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)。