一. 只能按照构建 Model的连接条件来写SQL
我们之前的Model选择的emp表和dept表的连接条件是inner join
此时我们想把inner join改成left join
select dname, sum(sal)
from emp e
left join dept d
on e.deptno = d.deptno
group by dname;
直接运行报错:
如果Model指定了inner join,那么SQL只能写inner join,其它join会报错
并且,顺序不能变,只能事实表在前维度表在后
select dname, sum(sal)
from dept d
inner join emp e
on e.deptno = d.deptno
group by dname;
二. 只能根据创建cube的时选择的维度字段分组统计
这个比较好理解,Kylin的原理是通过cube去做预计算,如果group by的时候,并不是cube选择的维度字段,那么没有提前做预计算,所以查询不出来。
select ename, sum(sal)
from dept d
inner join emp e
on e.deptno = d.deptno
group by ename;
三. 只能统计构建cube时选择的度量值字段
这个比较好理解,Kylin的原理是通过cube去做预计算,如果度量字段没有选择,或者查询的时候聚合类型不同于cube的聚合类型,此时没有预计算的结果,所以查询不出来。
select dname, max(sal)
from dept d
inner join emp e
on e.deptno = d.deptno
group by dname;