累计求和/运行时累计
场景:如下图所示,对AMOUNT字段累计求和
累计求和的八种姿势(Cumulative Sum/running total/YTD)
累计求和的八种姿势(Cumulative Sum/running total/YTD)

  1. 限定列-方式a
在Query Designer创建12个限定列,第1个限定列限定1月,第2个限定列限定1-2月……第12个限定列限定1-12月
累计求和的八种姿势(Cumulative Sum/running total/YTD)
累计求和的八种姿势(Cumulative Sum/running total/YTD)
累计求和的八种姿势(Cumulative Sum/running total/YTD)
  1. 限定列-方式b
累计求和的八种姿势(Cumulative Sum/running total/YTD)
使用常数选择
累计求和的八种姿势(Cumulative Sum/running total/YTD)
新建公式变量,使用替换路径,其它默认
累计求和的八种姿势(Cumulative Sum/running total/YTD)
新建公式
累计求和的八种姿势(Cumulative Sum/running total/YTD)
结果

  1. 限定列-Current Member
累计求和的八种姿势(Cumulative Sum/running total/YTD)
使用CM变量限定日历年月
累计求和的八种姿势(Cumulative Sum/running total/YTD)
结果

  1. 本地计算
累计求和的八种姿势(Cumulative Sum/running total/YTD)
在Query Designer设置Calculate single values As Cumulated标识
累计求和的八种姿势(Cumulative Sum/running total/YTD)
结果
*对某些前端工具不起作用
  1. HANA计算视图-SQL
A)方式1:Window function
累计求和的八种姿势(Cumulative Sum/running total/YTD)累计求和的八种姿势(Cumulative Sum/running total/YTD)
B) 方式2:子查询
累计求和的八种姿势(Cumulative Sum/running total/YTD)
  1. HANA计算视图-图形

累计求和的八种姿势(Cumulative Sum/running total/YTD)
新建计算视图ZCV_CALMONTH_CUMULATIVE
累计求和的八种姿势(Cumulative Sum/running total/YTD)
累计求和的八种姿势(Cumulative Sum/running total/YTD)
数据示例
累计求和的八种姿势(Cumulative Sum/running total/YTD)
新建模型CV_RUN_TOTAL
累计求和的八种姿势(Cumulative Sum/running total/YTD)
Proj_Month节点
累计求和的八种姿势(Cumulative Sum/running total/YTD)
Proj_Data节点
累计求和的八种姿势(Cumulative Sum/running total/YTD)
累计求和的八种姿势(Cumulative Sum/running total/YTD)
Join_sum节点
累计求和的八种姿势(Cumulative Sum/running total/YTD)
Union_1节点
累计求和的八种姿势(Cumulative Sum/running total/YTD)
Aggregation节点
累计求和的八种姿势(Cumulative Sum/running total/YTD)
整个计算视图
累计求和的八种姿势(Cumulative Sum/running total/YTD)
结果集
  1. 动态计算列
累计求和的八种姿势(Cumulative Sum/running total/YTD)
通过ABAP增强RSROA的方法COMPUTE_TABLE动态计算
累计求和的八种姿势(Cumulative Sum/running total/YTD)
结果集(注意效率)
  1. 通过DTP将数据物化到模型
适用于大数据量情况
参考代码:
DATA: lt_rp2 TYPE _ty_t_tg_1,
ls_rp2 TYPE _ty_s_tg_1,
lv_cm2 TYPE /bi0/oicalmonth2,
lv_n TYPE /bi0/oicalmonth2,
lv_cq1 TYPE /bi0/oicalquart1.
DATA(lv_rec) = lines( RESULT_PACKAGE ) + 1. "need to fill record field in result_package internal table.
LOOP AT RESULT_PACKAGE INTO ls_rp2.
lv_cm2 = ls_rp2-calmonth2. " take calmonth2, e.g. 01 for Jan, 02 for Feb and so on
lv_n = 12 - lv_cm2. " calc number of times the record should be multiplied in loop below
DO lv_n TIMES.
ls_rp2-calmonth2 = lv_cm2 + sy-index. " calc corresponding month number
CONCATENATE ls_rp2-calyear ls_rp2-calmonth2 INTO ls_rp2-calmonth. " ... and calmonth
lv_cq1 = ls_rp2-calmonth2 DIV 4 + 1. " calc corresponding quater number
ls_rp2-calquart1 = lv_cq1.
CONCATENATE ls_rp2-calyear ls_rp2-calquart1 INTO ls_rp2-calquarter. "... adn calquarter
ls_rp2-record = lv_rec.
ls_rp2-/bic/zrt = 'X'. "set field to sepatare rows with RT
APPEND ls_rp2 TO lt_rp2.
lv_rec = lv_rec + 1.
ENDDO.
ENDLOOP.
APPEND LINES OF lt_rp2[] TO RESULT_PACKAGE[]. "finally combine "in period"-dataset with RT-dataset.
累计求和的八种姿势(Cumulative Sum/running total/YTD)

相关文章: