hana ytd计算

YTD解答方案

要求:输出字段: 年月, YTD金额

因为我这边只有system一个账号,就用system账号写

合同表的结构和数据如下:

create column table "SYSTEM"."CONTRACTS"

       ("CONTRACT_ID" INTEGER null,  --合同ID

        "START_DATE" DATE null,  --开始日期

        "END_DATE" DATE null,           --结束日期

        "AMOUNT" DECIMAL (18,2) null)     --每月金额

      

insert into " SYSTEM "."CONTRACTS" VALUES(1,'2012-04-01', '2013-06-30',100);

insert into " SYSTEM "."CONTRACTS" VALUES(2,'2013-07-01', '2015-03-31',100);

insert into " SYSTEM "."CONTRACTS" VALUES(3,'2014-02-01', '2015-07-31',100);

insert into " SYSTEM "."CONTRACTS" VALUES(4,'2014-05-01', '2016-10-31',100);

insert into " SYSTEM "."CONTRACTS" VALUES(5,'2014-07-01', '2015-05-31',100);

insert into " SYSTEM "."CONTRACTS" VALUES(6,'2015-01-01', '2016-02-29',100);

insert into " SYSTEM "."CONTRACTS" VALUES(7,'2015-08-01', '2016-09-30',100);

insert into " SYSTEM "."CONTRACTS" VALUES(8,'2014-02-01', '2014-12-31',100);

insert into " SYSTEM "."CONTRACTS" VALUES(9,'2015-02-01', '2015-03-30',100);

 

日期表结构, 自行设计. 日期表要具有通用性, 不允许包含任何合同信息.

 

要求:建立一个带参数计算视图, 分别用SQL语句和图形的方式建立.

建立一个存储过程,每个月计算YTD,如何计划执行该存储过程。

输入时间参数201406-201506 求YTD

 

从题目的要求中不难看出有以下几个要求:

1. 弄清楚YTD概念(YTDyear to date的缩写)意思是:到现在为止的一年,最近的一年

2.日期表需要自行设计

3.建立计算视图 图形和sql语句两种

4.还需要写一个procedure

5.还需要设置一个过滤器来筛选时间

过程:

首先,我对合同表的时间进行分析 可以联想时间格式设置为YYYYMM 所以我对时间表的设计即可以设置YearMonth YM 但是我们可能后续还需要对其进行计算 所以在放入两个int型的数据Year_int and Month_int。在日期表中多加入一个伪列JOIN作为join 在后续的方法中连接。设计完毕后,添加数据。

首先争对合同表与日期表进行创建与加入数据(下图为表位置与表结构)

 

 

接下来创建合同表的计算视图,为了将日期格式都设置为YYYYMM格式 所以我们可以用一些函数记性设计

我要为合同表添加一下几个字段来方便计算运用,起始时间START_TIMEvarchar类型,格式为‘yyyyMM’)、结束时间END_TIMEvarchar类型,格式为‘yyyyMM’)、与日期表JOIN字段列(integer类型,格式为‘1’)、开始年、开始月、结束年、结束月(统为integer类型)

如下图:

 

 

最后就是进行YTD的计算了,因为在分析模型中 我们对合同表也插入了一行伪列 JOIN所以我们可以用join将其连接起来,

然后在里面join_1添加flag字段目的是去掉合同表日期与日期表日期不相关的数据(只有月份大于等于start并且小于等于end才可以通过)。

过滤后 就要进行YTD计算, projection_3里面写了一个YTD计算(YEARMONTH小于等于END_TIME的时候 跳转到 另一个if 如果YEAR_INT=START_YEAR_INT 则代表同年 直接MONTH_INT-START_MONTH_INT即可 如果不是则代表不同年 所以用MONTH_INT即可)

最后在Semantics中设置维度和度量 以及对YEARMONTH添加过滤器

这样图形创建计算视图就解决了

 

接下来sql语句创建计算视图,首先需要添加以下几个计算列,START_TIME END_TIMEYAERMONTHS ,计算方法按照YTD计算就可以了

 

猜你喜欢

转载自my.oschina.net/u/4035240/blog/2961103