使用Keep flag的目的

当我们在使用HANA计算视图做模型的时候,有时候模型最终输出结果与想要的最终结果不一致,部分数据条目没有聚合。

原因如下:
对HANA模型中的计算列,无论在哪里定义,HANA总是默认最终聚合后再算计算列。对某些计算列的运算(例如两列的乘除法),先聚合再运算和先运算再聚合的结果是不一样的,如果我们并不想要按最终维度聚合后再算计算列,而是想要在更细粒度的分组维度上先算计算列再把结果聚合,那么就需要把这个更细的分组维度中不在当前分组维度的列的KEEP FLAG属性设为true

不过我相信,你看了上面的玩意也是一知半解,来,上案例

上案例

数据准备

1
2
3
4
5
6
7
8
9
10
11

--创建新表
CREATE ROW TABLE "SUSER"."temp_0316" ( "C1" VARCHAR(10) CS_STRING,
"C2" VARCHAR(10) CS_STRING,
"C3" INT CS_INT
) ;
--上数据
insert into "SUSER"."temp_0316" values ('AA','F','1');
insert into "SUSER"."temp_0316" values ('BB','Fl','10');
insert into "SUSER"."temp_0316" values ('CC','Fla','100');
insert into "SUSER"."temp_0316" values ('AA','F','1');

上模型

好久没用过视图了,突然发现不能复现场景了,等啥时候能复现了再更新吧💨