FineDirect引擎内存化

目录:

1、描述

FineDirect引擎内存化章节在线视频学习请查看【FineDirect内存化】

FineDirect是基于SQL的可视化引擎,因此在用户配置表间关联关系后,FineDirect引擎会将两张表的关联关系转换为带join的SQL语句。但数据库对于大数据量join的执行通常不够快,并且经常在多张表关联的时候,有一部分表不常更新,因此FineDirect提供了内存化功能。内存化是指将这些不常更新的表提前加载进入内存,来加快SQL执行速度。比如,维度表与事实表进行1:N关联的时候,为维度表勾选内存化,FineDirect在计算时会自动将维度进行内存化处理,然后再与事实表关联,以加快分析时的数据计算速度。

2、使用方式

如下图所示,在数据配置>业务包管理下的业务包表数据中,可以看到有内存化处理复选框,勾选此框即为该表添加内存化功能。

下面我们给出内存化功能的实际使用场景。

3、使用场景

在零售行业中,常常需要按照店铺维度来分析销售额,店铺维度表和销售明细表如下所示:

两张表根据店号进行关联,店铺维度表通常数据量不大且较少更新,而销售明细表的数据量大且更新频繁。此时按照店铺来统计销售额,默认推荐的模型是:销量表和店铺表进行N:1关联(配置请参考关联模型配置),如下图所示:

未勾选内存化

在未勾选内存化功能的时候,用店铺名称来汇总销售额,执行的SQL语句如下:

select 店铺,sum(销售额) from 销售明细表A  left join 店铺维度表B on A.店号=B.店号 group by 店铺名称  

因为销售明细表数据很多,因此执行该SQL时间较长。

勾选内存化

若此时,我们为较少更新的店铺维度表勾选内存化功能,则FineDirect引擎在计算时会将店铺维度表加载入内存。同样的场景FineDirect在执行时,只会将销售明细根据店号进行汇总,将汇总结果和内存中的店铺维度表进行关联,得到最后的结果。通过这种方式节省了数据库执行join的时间,同时因为是对汇总之后的结果进行关联,因此执行速度也能更快。


勾选内存化后,可参考FineDirect引擎系统配置中的关联表缓存相关参数来分大小缓存配置内存化的维表缓存数量及时间,判断依据为 行*列 >= 依据值,为大缓存 , 行* 列 < 依据值,为小缓存。配置文件为%FineBI%\webapps\WebReport\WEB-INF\resources\direct  之下的system.properties 配置文件。

若上述为关联关系为N的销售明细表勾选内存化,则关联关系为1的店铺维度表即使不勾选,也会自动被内存化处理。

注:内存化功能适用于数据量小且更新频率较低的表,需根据服务器内存配置适当选择。


FineDirect引擎内存化章节在线视频学习请查看【FineDirect内存化】

附件列表


主题:
标签: 暂无标签

文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201