1. 概述
1.1 应用场景
梳理好数据在 BI 中的存放结构后,就可以将数据库中的数据接入 BI (添加数据库表、添加SQL数据),存放在对应的位置。
如果你使用的是 抽取版本,还需要进行数据更新 后才能保证数据的时效性和可用性。
此时,由于 BI 系统中数据表繁多且数据量大,关联、引用等复杂,更新时间势必很长,如果没有好的数据更新方案,就会出现数据时效性不足,更新缓慢、系统性能差等问题。
因此作为管理员该如何设计 BI 系统的更新方案就非常重要。
1.2 预期效果
希望数据更新能保证数据正常使用,系统性能稳定、数据更新速度较快,资源消耗相对较少;避免因为错误设置带来的问题和风险。
形成全局定时更新、特殊业务包定时更新、特殊单表定时更新的更新体系;
父表更新后子表也会跟着更新,不需要再手动设置;
更新顺序为:1)基础表更新 2)数据处理用户在普通业务包创建的处理性质自助数据集更新 3)关联缓存更新 4)其他自助数据集更新
1.3 实现思路
对于BI 项目经理(管理员)通过设置数据更新,保证业务数据的时效性(例如始终确保BI数据是使用时间前一天的数据)。
对于其他 BI 编辑用户,也需要评估更新数据表的范围,以此更好的使用 BI。
2. 数据更新类型说明
更新种类:根据表的数据量大小,确定更新种类是全量或是增量更新。建议维度表采用全量更新、事实表采用增量更新。
更新频次:临时更新是需要手动点击按钮进行更新;定时更新可设置更新时间和频率,适合设置基础表和宽表在夜间更新。
更新细粒度:分为单表、业务包、全局更新,通过上一层对下一层进行控制,实现更新粒度的控制。例如:全局更新是对所有业务包更新、业务包更新是对业务包下所有单表进行更新。可对业务包、单表设置不跟随上一级更新,此时全局更新时一些特殊业务包/单表不跟随全局更新而更新。
使用推荐:
在修改单个自助数据集后时适合用单表手动更新,而一些特殊的单表如数据库的前日数据在早上7点才更新完毕,适合设置定时单表更新,而不是跟随业务包或者全局更新。
而业务包更新和全局更新由于更新耗时较长,适合在无人使用BI的时间,如下班后、夜间进行更新,从而最小程度上影响使用用户。
3. 全局更新方案
3.1 梳理基础表更新需求
最重要的是获取表更新频率和时间:根据大部分数据表的更新频率和时间可确定全局更新的时间;
根据数据量去判断表更新种类:对于数据量不大的表可使用「全局更新」;数据量较大的事实表适合使用「增量更新」。
可以创建如下的数据表进行需求梳理:
分组 | 业务包名称 | 表名称 | 表类型 | 数据量 | 源数据更新完毕时间 | 更新频率&时间 | 更新种类 |
---|---|---|---|---|---|---|---|
分组1 | 业务包1 | 表1 | SQL/DB/Excel | 1kw | 晚12点 | 每天1次,12点30后 | 全量 |
每天1次 | 增量 | ||||||
不更新 | |||||||
3.2 设置全局定时更新
取大多数表的更新频率&时间作为全局更新的更新频率&时间,在「全局更新」下设置「定时更新」任务。
设置定时全局更新任务:更新时间&频率,结束时间通常选无期限,如下图所示:
3.3 设置单表增量更新
此时全局定时更新的设置: 全局更新对所有业务包更新、业务包更新对业务包下有所单表更新。从而完成对所有数据表的定时更新,但是对于跟随业务包更新的数据表,会有一部分由于数据量比较大,需要设置为增量更新,也就是只更新新增的数据。
因此需要对每一个增量更新的单表,设置为业务包更新时,首次全量,此后增量更新,如下图所示:
3.4 设置特殊业务包的业务包定时更新
特殊业务包指的是更新频率&时间与其他表/业务包差异过大,不跟随全局更新一起更新的业务包,例如凌晨6点更新的业务包、每周更新一次的业务包、不更新的业务包。
注:若无特殊业务包可跳过此步骤。
查找特殊更新频率&时间的业务包,设置业务包更新为:全局更新时不更新,并对业务包设置定时更新任务。
例如业务包1只需要每周六的4点后更新数据,一年后数据停用就不需要更新,点击「业务包更新」设置为全局更新时不更新,并根据业务包的更新时间&频率、设置定时更新任务的名称、开始时间、执行频率、结束时间等属性,设置结果如下图所示:
3.5 设置特殊表的单表定时更新
特殊表指的是更新频率&时间与其他表/业务包差异过大,不跟随全局更新一起更新的数据表,例如凌晨6点更新的数据表、每周更新一次的表、不更新的数据表。
查找特殊更新频率&时间的单表,设置单表更新为:业务包更新时不更新,并对该单表设置定时更新任务(若数据量较大可设置增量更新)。
注:若无特殊业务包可跳过此步骤。
例如由于某数据表早晨7点才更新昨日数据,因此属于更新频率和时间与其他表差异较大的特殊表,需要单独设置单表定时更新,且由于表的数据量比较大,因此设置为增量更新。
修改特殊单表的跟随业务包更新设置为「首次全量,此后不更新」,根据此单表的更新频率&时间和更新种类,对单表添加定时更新任务,设置单表更新的任务名称、更新方式(全量/增量)、开始时间、执行频率、结束时间,如下图所示:
并输入增量更新语句,如下图所示:
4. 用户手动更新方案
根据需要手动更新的表的范围,来选择手动更新的细粒度,是进行单表更新还是业务包更新;
评估表更新时间表的关联更新;
评估表影响范围;
根据评估选择更新时间及范围。
注:尽量避免白天(BI系统有使用用户时)进行手动全局更新或业务包更新。
5. 注意事项
尽量避免在白天更新原始数据和基础数据,若出现表白天无故更新且无人操作的情况,请检查自动更新设置中的时间设定是否存在问题。
更新时将相近时间的任务合并,放在一起更新,减少自助数据集重复更新。
避免出现大量的单表且更新时间比较长的定时更新,尽量使用「全局更新」,可设置一天一次。