Qlik开发总结
总体概念:
根据思路执行步骤:
1、通过数据库读取数据生成qvd文件,以windows服务器为例,需要在Qlik所在的机器上配置ODBC数据库连接,然后再qlik软件中新建数据库连接才能读取
2、配置好连接后在qlik数据加载编辑器中需要编写数据加载逻辑,这时候数据加载并没有存在本地,需要明确使用命令store存储于本地位置形成本地qvd文件,这个qvd文件则为基准数据文件
3、由于qlik这时存放的数据是基准数据,而报表展示一般是筛选或者统计后的数据,所以需要再新开报表页面,加载基准数据qvd文件并编写筛选逻辑,形成bi报表文件,同样的,如果没有明确store,那么报表是存在内存里面的,由于报表的使用是时时变化的,所以报表文件一般不需要持久化存储于硬盘,qlik报表工具属于高性能BI工具,每次从基准数据中加载生成报表视图时间很短。能节约硬盘空间。
关于加载数据脚本开发:
连接数据库:windows主机得配置odbc
LIB CONNECT TO
举例:
LIB CONNECT TO 'MYSQL8.0_BA (admin)';
重命名加载的数据
[name]:
举例:
[订单]:
select
Po.orderid as 订单号,
po.create_time as 创建时间
from db_order.t_pay_order po
where po.create_Time>= now() - 1/144
;
格式化视图字段:
[Months]:
load
distinct date(monthstart(创建时间),'YYYY-MM') as monthvalue
resident [订单];
循环:
For
举例:
for i = 1 to cnt;
let v_month = FieldValue('monthvalue',$(i));
合并:
如果文件字段全部一致会自动union all成一张表,
显示指定合成:Concatenate
显示指定不合成:NoConcatenate
加载:
Select 或者 load 都可以,如果是从数据库加载使用select,如果是从qvd文件加载建议使用load
举例:
LOAD *
Resident 订单
WHERE monthstart(创建时间) = '$(v_month)'&'-01';
变量定义:
Let
举例:
LET vQVDExists = not isnull(QVDCreateTime('[lib://data (admin)/事实表/订单$(v_month).qvd]'));
判断:
If
Else
End if;
举例:
for i = 8 to v_mon;
if i<10 then
let v_dataname = '$(v_year)'&'-0'&'$(i)';
else
let v_dataname = '$(v_year)'&'-'&'$(i)';
end if;
循环:
For i= 1 to 循环范围;
Next I;
举例:
for i = 8 to v_mon;
if i<10 then
let v_dataname = '$(v_year)'&'-0'&'$(i)';
else
let v_dataname = '$(v_year)'&'-'&'$(i)';
end if;
load
订单ID as 订单编号,
卡券产品ID
from [lib://data (admin)/事实表/订单表$(v_dataname).qvd] (qvd);
next i;
关联:
Join/left join/keep/left keep
keep和join用法差不多
举例:
left keep
load
商品编号,
商品分类ID
from [lib://data (admin)/维度表/商品基础信息.qvd] (qvd);
持久化存储:
Store
举例:
store SplitTable into [lib://data (admin)/维度表/产品信息表$(v_month).qvd] (qvd);
删除:
Drop
举例:
drop table SplitTable;
不包含(增量的时候有用):
exists
举例:
load * from [lib://data (admin)/维度表/产品信息表$(v_month).qvd] (qvd)
where not exists(编码);
qlik的后台管理界面是再QMC后台,
域名/qmc/,里面配置各脚本定时任务,角色,权限,连接信息等
更多操作参考官方文档