统一OLAP查询平台之语义层

本文探讨了数据开发过程中的常见痛点,如数据链路依赖、指标理解难度和查询性能问题,并提出了统一语义层作为解决方案。统一语义层通过提供多视角理解、逻辑缓冲和SQL优化,确保业务人员和开发人员对指标的一致理解,减少因指标变化带来的开发波动,并通过智能选择查询对象提升查询性能。
摘要由CSDN通过智能技术生成

背景:数据开发过程中,如果对分析指标理解有偏差将直接导致整个数据链路的返工,如何以最小代价应对分析指标的合理变动?同时,面对海量数据分析如何提高查询性能?这些问题都可以通过统一OLAP查询平台来解决。

一、数据从需求到加工过程中痛点

从下图1-1看出数据开发的一般过程:
由业务方提出各种指标的分析需求。
产品和应用讨论分析指标,并拉上数仓和业务一起确认指标。
数仓理解指标,并开始数据加工。首先,从ODS层开始对数据进行抽取、清洗、加工。其次,在DW层进行建模及简单指标计算。最后,输出结果表到ADS层。
应用开发的同学理解指标并完成最终业务逻辑的SQL。
业务方开始使用。

在这里插入图片描述
图1-1 数据开发一般过程*

1.1 痛点1:数据链路依赖性导致波动性
数据加工链路的每一层都是上层依赖下层,如果某一层逻辑发生了改变,都会引起整个数据链路开发逻辑的波动。特别是,当数据量超大时,这种波动的开销会被放大,变得非常昂贵。期望能最小代价的吸收指标逻辑的合理波动。

1.2 痛点2: 所有链路上人员都要理解指标含义
从数据开发的链路来看,所有相关人员都必须理解指标逻辑才能把工作进行下去。对于应用开发的同学他们本该只专注与前后端应用的开发,怎么完善用户体验,怎么实现高并发,怎么做缓存等等,而不是花精力来维护SQL。且维护的SQL里充满了复杂的指标定义,如果多处使用到还要再COPY/PASTE一下,时间长了实在难以维护。

1.3 痛点3: 查询模式呆板
数据一旦写入ADS层,因为上层应用直接绑定目标表进行查询,当目标表数据规模随着时间积累变得很大时,查询性能不能保证,优化手段实在有限。

二、统一语义层解决痛点

统一语义层的本意是利用语义实现更广泛的对业务数据理解的一致性,避免理解误差。

2.1 多视角解决理解上的偏差
统一语层对不同用户展示不同视角:

对业务、分析师、应用层只展示维度名称,指标名称。最简单情况应用或分析师通过托拉拽即可实现数据分析。
对建模、数仓开发人员展现具体数据表的视角,比如,SUM(sales)具体指标逻辑的定义、维度信息、分区等信息。

2.2 通过语义逻辑缓冲合理指标逻辑变化
从数据加工链路中可以看到,当指标发生了变化,会引起整个链路的波动。因为所有应用开发都是硬绑定具体业务逻辑SQL,没有任何缓冲地带,一旦指标逻辑有变化,要么在应用源码里改,要么在数据加工链路上改,不管在哪改,都会引起额外的开销。

相比之下,语义层具备维护指标逻辑的能力,对外只暴露指标名,内部可以缓冲一定范围的逻辑改变。比如:某个指标需要加个判断条件(case when)或者需要加减乘除等运算,都可以通过修改语义层指标逻辑来完成,从而保证了上游的应用及下游的数仓数据链路加工的稳定。

2.3 通过语义层优化SQL
从图2-1左边图示可以看出,统一语义层是一个json描述文件,定义了模型的名字,表示适用什么场景。维度的范围及指标的定义信息。应用只需要知道模型名、指标名、维度名就可以分析了,如图2-1右边图示所示,根据语义层写出简洁的SQL。
在这里插入图片描述
图2-1 统一语义层表示*

图2-2展示了应用了语义层后,SQL的优化情况。SQL不仅简洁了,如果某些指标在应用的多个模块出现只需要用指标名即可,而不用去维护指标逻辑。语义层维护指标逻辑,一旦指标逻辑发生了改变,应用层引用的指标立即生效。

在这里插入图片描述
图2-2 实战统一语义层SQL优化*

2.4 通过语义层选择最优查询对象
前面说过,现有开发模式是应用直接绑定ADS结果表作为查询对象,性能完全取决于结果表的大小及表结构。如果通过语义层来查询,因为绑定的是语义模型,并没有绑定具体查询对象。所以,真正查询时可以根据具体SQL选择最优查询对象来回答查询,从而实现查询性能的最优化,具体做法将在下次BLOG的统一OLAP查询平台引擎部分给大家分享。

三、总结

综上所述,统一语义层提供一种可能让需求方和开发方都能从自己熟悉的领域来理解指标含义,从而避免了理解的误差。此外,语义层具备一定逻辑缓冲能力,吸收指标逻辑合理的变化。最后,语义层提供灵活可选查询对象的能力,为进一步优化查询性能做了准备。
————————————————
转载自
原文链接:https://blog.csdn.net/SmartCodeTech/article/details/117133074

目录 第1 章 Designer 简介 1.1 概述 ...................................................... 8 1.2 Designer 和 Universe 基本原理 ............................. 8 1.3 如何使用 Designer 来创建 Universe? ...................... 12 1.4 谁是 Universe 的设计员? ................................. 15 1.5 Universe 开发过程简介 .................................... 16 1.6 Designer 示例材料 ........................................ 19 第2 章 执行基本操作 2.1 概述 ..................................................... 21 2.2 启动 Designer ............................................ 21 2.3 导入 Universe ............................................ 25 2.4 打开 Universe ............................................ 27 2.5 导出 Universe ............................................ 28 2.6 保存 Universe ............................................ 30 2.7 关闭 Universe ............................................ 32 2.8 创建 Universe ............................................ 32 2.9 设置 Universe 参数 ....................................... 35 2.10使用 Designer 用户界面 ................................... 67 2.11使用 “查找并替换” .......................................71 2.12组织表显示 ............................................... 74 2.13选择模式显示选项 ......................................... 79 2.14打印 Universe ............................................ 86 第 3 章 创建包含表和联接的架构 3.1 概述 ..................................................... 89 3.2 什么是模式? ............................................. 89 3.3 插入表 ................................................... 91 3.4 使用派生表 ............................................... 95 3.5 定义联接 ................................................. 99 3.6 定义特定的联接类型 ...................................... 116 3.7 使用基数 ................................................ 132 3.8 检查 Universe ........................................... 140 第 4 章 解决架构中的联接问题 4.1 概述 .................................................... 145 4.2 什么是联接路径问题? .................................... 145 4.3 定义别名 ................................................ 147 4.4 定义上下文 .............................................. 152 4.5 解决环路 ................................................ 162 4.6 解决断陷阱 ............................................ 188 4.7 解决扇形陷阱 ............................................ 193 4.8 以图形方式检测联接问题 .................................. 199 4.9 检查 Universe ........................................... 202 第 5 章 构建 Universe 5.1 概述 .................................................... 207 5.2 Universe 构建简介 ....................................... 207 5.3 使用 “Universe”窗格 ................................... 210 5.4 有关类、对象和条件的基本操作 ............................211 5.5 定义类 ..................................................212 5.6 定义对象 ................................................215 5.7 定义次结构 ............................................247 5.8 使用次结构的级联值列表 ................................251 5.9 使用值列表 ..............................................254 5.10自动创建基本的 Universe .................................269 5.11测试 Universe ...........................................276 第6 章 生成 OLAP Universe 6.1 概述 ....................................................278 6.2 依据 OLAP 多维数据集源生成 OLAP Universe ................279 6.3 创建 OLAP 连接 ..........................................280 6.4 创建 OLAP Universe ......................................282 6.5 保存并导出 OLAP Universe ................................285 6.6 更新 OLAP Universe ......................................286 6.7 OLAP 至 Universe 映射 ...................................286 第7 章 依据元数据源创建 Universe 7.1 概述 ....................................................295 7.2 依据元数据源生成 Universe ...............................295 7.3 选择元数据源 ............................................296 7.4 XML 元数据源 ............................................298 7.5 Oracle 分析工作区 .......................................308 第8 章 创建 Universe 以用作 Metric 8.1 概述 ....................................................321 8.2 使用 Universe 来构建 Metric .............................321 8.3 企业 Metric ............................................. 324 8.4 Process Analysis 统计图的 Universe 配置 ................. 327 8.5 为基于集合的 Metric 设计 Universe ....................... 330 第 9 章 优化 Universe 9.1 概述 .................................................... 333 9.2 使用聚合表 .............................................. 333 9.3 使用 @ 函数 ............................................. 346 9.4 使用外部策略定制 Universe 创建 .......................... 354 9.5 使用分析函数 ............................................ 367 第 10 章 管理 Universe 10.1概述 .................................................... 379 10.2部署 Universe ........................................... 379 10.3针对 Universe 设置访问限制 .............................. 380 10.4与多个设计员一起工作 .................................... 389 10.5链接 Universe ........................................... 390 10.6在一个 Universe 中包含另一个 Universe ................... 399 10.7管理用户和登录 .......................................... 400 10.8优化 Universe ........................................... 402 附录 A 使用示例资料 A.1 概述 .................................................... 405 A.2 Club 数据库 ............................................. 405 附录 B Business Objects 信息资源 B.1 文档和信息服务 .......................................... 411 B.2 文档 .................................................... 411 B.3 客户支持、咨询和培训 ....................................412 B.4 实用地址一览 ............................................413 附录C 版本发布后的补遗 C.1 概述 ....................................................414 C.2 DBUser/DBPass ...........................................414 索引.............................................415
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值