在零售和金融证券等数据分析复杂度较高的行业中,统计指标和维度的数量有限(通常在几十个,最多一百多个),但这些维度与指标的组合形式却非常多, 难以穷举。传统的 BI 系统通常采用大量预计算表的方法解决,一方面为了提高了计算效率,另一方面为了解决复杂 SQL,但当维度或指标发生变化时, (例如:新增指标或维度,增加新的过滤字段),不得不重新开发或重新写 SQL。
为了解决维度和统计指标自由组合,并能自动生成 SQL,Agile Query 会依据用户提供的维度和统计指标的组合,以图搜索算法动态计算查询所涉及的表, 根据关系型数据库的计算规则,自构建多个子查询,最终合并所有子查询生成完整的 SQL,并执行 SQL 返回数据,具体结构如下图所示:
分别统计每个品类(商品、客户)的销售额、订单数量和客户数量
分别统计每个品类(商品、客户)的复购率和客单价
在实际的数据分析过程中,大都数指标的定义都会涉及多张表,数据库表之间的关系不同,计算对应指标的 SQL 的结构差异很大,如果预先为每一个指标或每一种组合关系构建预计算表, 系统中将会存在大量预计算表,随着时间的推移、人员的变动,那些预计算表的维护变得极为困难。Agile Query 根据基础配置动态生成 SQL 的方式能够提升开发效率, 也能有效的降低维护成本。