首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用集合分析将过去2值+当前值+下2值之和进行汇总?

如何用集合分析将过去2值+当前值+下2值之和进行汇总?
EN

Stack Overflow用户
提问于 2013-10-28 07:18:22
回答 2查看 9.9K关注 0票数 3

我想用集合分析计算过去2值+当前值+下2值的总和。无论是否进行集分析,的工作方式都与一样。无论是否使用集分析("{<Week=>}"),它都可以正常工作。但是当缩放时,图的值会相应地变化。所以我用了集分析。即使这不适合我的案子。

但是,当我放大图表时,我们并没有得到实际的结果。因为我用了集合分析。

我需要以下几点。假设这是我的数据,

代码语言:javascript
复制
|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)

对于缩放,我使用了如下的集合分析,

代码语言:javascript
复制
RangeSum(Below(Sum({<Date=>}Value),1,6)) + RangeSum(Above(Sum({<Date=>}Value),1,6)) + Sum({<Date=>}Value)

这不像预期的那样有效。

EN

回答 2

Stack Overflow用户

发布于 2013-11-11 16:40:23

这应该可以按照您的要求进行:

后端代码:

代码语言:javascript
复制
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;

您的表达式:

代码语言:javascript
复制
Sum({<Week=,WeekKey=,Row = {'>=$(=max(Row)-2)<=$(=max(Row)+2) '}>} Value)
票数 2
EN

Stack Overflow用户

发布于 2013-11-05 08:56:55

我对评论中的公开问题作了以下假设:

  1. 在放大时,不应更改某一范围的和。
  2. 上一值07/2011为0(如06/2011)

因此,根据每周的不同,必须对所有的值进行计算。也许这可以用集合分析来完成,但我想这些比较和查找如果不是不可能的话,也会很困难。

我更喜欢预先计算加载脚本中的值的解决方案:

代码语言:javascript
复制
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
];

首先,计算所有需求周的周数:

代码语言:javascript
复制
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;

查找每周的值:

代码语言:javascript
复制
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。

代码语言:javascript
复制
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现在包含有效的数值。

代码语言:javascript
复制
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;

我的仪表板上有一个桌子盒:

还有一张图表:

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19629043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档