我想计算过去2个值的总和+当前值+接下来的2个值,并设置分析。 有或没有设置分析,它按预期工作。我的意思是它的工作与预期有或没有集分析("{<Week=>}"
)。但是当缩放时,图形的值会相应地改变。所以我使用了set分析。即使它不适合我的情况。
但是,当我缩放图表时,我们没有得到实际结果。因为我使用了集合分析。
我需要以下内容,
考虑这是我的数据,
|Week | Value |
|------------------|
|01/2011 | 256 |
|02/2011 | 2056 |
|03/2011 | 112 |
|04/2011 | 95 |
|05/2011 | 1069 |
|07/2011 | 125 |
|08/2011 | 73 |
--------------------
我需要为04/2011
绘制数据(2056+112+95+1069+125)
,我们需要为每个日期计算
我正在尝试使用以下表达式
一切正常:RangeSum(Below(Sum(Value),1,6)) + RangeSum(Above(Sum(Value),1,6)) + Sum(Value)
对于缩放我使用了如下设置分析,
RangeSum(Below(Sum({<Date=>}Value),1,6)) + RangeSum(Above(Sum({<Date=>}Value),1,6)) + Sum({<Date=>}Value)
没有按预期工作。请帮我摆脱这个。
答案 0 :(得分:2)
这应该可以按你的意愿运作:
后端代码:
Inline:
LOAD * INLINE [
WeekKey,Value
01/2011,256
02/2011,2056
03/2011,112
04/2011,95
05/2011,1069
07/2011,125
08/2011,73
];
dateTemp:
LOAD
WeekKey,
Right(WeekKey,4)&Left(WeekKey,2) as SortOrder,
Left(WeekKey,2) as Week,
Right(WeekKey,4) as Year
Resident Inline;
LOAD
RowNo() as Row,
*
Resident dateTemp
Order By SortOrder ASC;
DROP Table dateTemp;
您的表达:
Sum({<Week=,WeekKey=,Row = {'>=$(=max(Row)-2)<=$(=max(Row)+2) '}>} Value)
答案 1 :(得分:0)
我对评论中的未决问题做了以下假设:
因此,必须根据周数对所有值进行计算。 也许可以用set分析完成,但我想这些比较和查找 如果不是不可能的话,将会很困难。
我更倾向于使用预先计算加载脚本中的值的解决方案:
BaseData:
Load
oWeek,
value,
left(oWeek,2) as nWeek,
right(oWeek,4) as nYear,
MakeWeekDate(right(oWeek,4), left(oWeek,2)) as weekstart
inline
[
oWeek, value
01/2011, 256
02/2011, 2056
03/2011, 112
04/2011, 95
05/2011, 1069
07/2011, 125
08/2011, 73
];
首先计算所有需要周的周数:
TEMP_1:
Load
oWeek, value, nWeek, nYear, weekstart,
WeekStart(weekstart, -1) as weekstart_p1,
WeekStart(weekstart, -2) as weekstart_p2,
WeekStart(weekstart, 1) as weekstart_n1,
WeekStart(weekstart, 2) as weekstart_n2
resident BaseData;
drop Table BaseData;
查看周的值:
TEMP_2:
Load
oWeek, value, nWeek, nYear, weekstart,
weekstart_p1, weekstart_p2, weekstart_n1, weekstart_n2,
lookup('value', 'weekstart', weekstart_p1, 'TEMP_1') as value_p1,
lookup('value', 'weekstart', weekstart_p2, 'TEMP_1') as value_p2,
lookup('value', 'weekstart', weekstart_n1, 'TEMP_1') as value_n1,
lookup('value', 'weekstart', weekstart_n2, 'TEMP_1') as value_n2
resident TEMP_1;
drop Table TEMP_1;
字段value_p1 ...可能包含'null',因此它们必须转换为0。
TEMP_3:
Load
oWeek, value, nWeek, nYear, weekstart,
weekstart_p1, weekstart_p2, weekstart_n1, weekstart_n2,
value_p1, value_p2, value_n1, value_n2,
if (isnull(value_p2), 0, value_p2) as val_p2,
if (isnull(value_p1), 0, value_p1) as val_p1,
if (isnull(value_n1), 0, value_n1) as val_n1,
if (isnull(value_n2), 0, value_n2) as val_n2
resident TEMP_2;
drop Table TEMP_2;
字段val_p1现在包含有效的数值。
Data:
Load
oWeek, value, nWeek, nYear, weekstart,
weekstart_p1, weekstart_p2, weekstart_n1, weekstart_n2,
val_p1, val_p2, val_n1, val_n2,
val_p2 + val_p1 + value + val_n1 + val_n2 as mySum
resident TEMP_3;
drop Table TEMP_3;
在我的信息中心中,我有一个桌面框架:
图表:
希望有所帮助。