我是Power BI的完整新手
我正在尝试在Power BI的Power Query Editor中重现这种类型的计算。
屏幕截图来自Excel,在C列中,它使用AVERAGE($ B $ 2:B2),下一行是AVERAGE($ B $ 2:B3),依此类推。
C2 =((168 + 313)/ 2)= 241
C3 =((((168 + 313)+ 301)/ 3)= 261
以此类推
在Power Query中是否可以进行这种类型的计算?
答案 0 :(得分:0)
您可以对当前日期使用平均函数。
作为计算列,它看起来像这样:
AvgPresented =
CALCULATE(
AVERAGE(
Table1[CallsPresent]),
ALL(Table1),
Table1[FullDate] <= EARLIER(Table1[FullDate]
)
)
或者这个:
AvgPresented:
AVERAGEX(
FILTER(
Table1,
Table1[FullDate] <= EARLIER(Table1[FullDate])
),
Table1[CallsPresent]
)
注意:EARLIER
函数引用的是较早的行上下文(即当前行中的值),与时间或日期无关。
答案 1 :(得分:0)
在Power Query M语言中,您可以执行类似的操作。过滤直到并包括当前行日期的行,然后平均func HTMLImageCorrector(HTMLString: String) -> String {
var HTMLToBeReturned = HTMLString
while HTMLToBeReturned.range(of: "(?<=width=\")[^\" height]+", options: .regularExpression) != nil{
if let match = HTMLToBeReturned.range(of:"(?<=width=\")[^\" height]+", options: .regularExpression) {
HTMLToBeReturned.removeSubrange(match)
if let match2 = HTMLToBeReturned.range(of:"(?<=height=\")[^\"]+", options: .regularExpression) {
HTMLToBeReturned.removeSubrange(match2)
let string2del = "width=\"\" height=\"\""
HTMLToBeReturned = HTMLToBeReturned.replacingOccurrences(of:string2del, with: "")
}
}
}
return HTMLToBeReturned
}
列。
CallsPresent
= List.Average(
Table.SelectRows(
#"[Previous Step Name Here]",
(C) => C[FullDate] <= [FullDate]
)[CallsPresent]
)
位只是您要进行选择的表。查询编辑器中的查询通常是您一次执行一次转换的步骤列表。因此,您的新步骤是根据上一步创建自定义列。
#"[Previous Step Name Here]"
语法有点棘手,但基本上,它是用来让我将正在操作的((C) =>
)表中的FullDate
与{ {1}}在当前步骤中。请查看this blog post,以获取与此相关的更多信息。
答案 2 :(得分:0)
该视频为我提供了帮助:https://youtu.be/rI0lxNmCtnc
它在excel中,但是Power Query部分实际上与Power BI工具相同。
(迟到将近2年,但这也许会对其他人有所帮助。)