我有以下列KPI_PERIOD
和KPI_VALUE
,并希望使用Groovy实现名为KPI_Output
的新列。
实现KPI_Output
的逻辑是将KPI_Value
的值相加。换句话说,对于Apr
,KPI_Output
与KPI_Value
相同,因为它是第一个月。对于May,KPI_Output
值为KPI_Value
和Apr
的{{1}}。对于May
,Jun
是KPI_Output
,KPI_Value
和Apr
的{{1}}。对于May
,June
值Jul
为KPI_Output
,KPI_Value
,Apr
和May
- 依此类推。 ..
Jun
如何使用Groovy实现这一目标?
答案 0 :(得分:1)
你走了:
def input = """KPI_PERIOD KPI_VALUE
Apr 33091
May 29685
Jun 31042
Jul 32807
Aug 32782
Sep 34952
Oct 32448
Nov 31515
Dec 24639
Jan 25155
Feb 31320
Mar 33091
"""
def splitted = input.split('\n')[1..-1]
sum = 0
def transformed = splitted.collect { it.split(/\s+/)*.trim() }.inject([]) { res, curr ->
sum += curr[1].toInteger()
curr << sum.toString()
res << curr
}
println "KPI_PERIOD KPI_VALUE KPI_OUTPUT"
transformed.each {
println "${it[0].padLeft(10)} ${it[1].padLeft(12)} ${it[2].padLeft(12)}"
}
希望一切都清楚,如果不是随意问的话。