当前位置: 首页 > news >正文

DQL 超维分析

0 准备篇

背景

企业建设 BI 系统的目的是让业务人员灵活自助查询,但实际使用效果却很差。这是因为有意义的查询经常是需要多表关联的,也就是 SQL 中的 JOIN。但业务人员理解不了关联,没法完成这样的工作。所以,BI 产品就要解决关联问题,将多表关联转换成业务人员能接受的单表查询。

目前解决关联计算的方式有两种:宽表和自动关联。

采用物理或逻辑宽表,事先将多表冗余到一个表中,从而消除关联。但宽表方案需要事先准备,根据业务需求决定宽表内容,来了新需求再修改宽表,且不说宽表因为不满足范式可能出现数据错误,需求变化要不断修改模型已经与灵活查询的目标背道而驰了。

还有些产品会根据字段类型、长度等信息进行自动关联,这样用户就不用自己关联了。这种方式只适合极小部分的简单场景,稍微常规一点情况就处理不了。比如一个通话记录表里有主叫号码和被叫号码,两个字段的属性完全一样,要怎么识别该关联哪个?而且情况复杂时这个表可能要被重复关联,比如查询北京号码打给上海号码的通话记录,这个表就要被关联两次,这个表还会有维表也会被复制多次,如果维表还有维表… 这种常见业务自动关联就搞不定了。

..

类似的查询在实际业务中还有很多:

• 零售业务中,根据销售记录和地区信息查询:不同地区下各个城市的销售情况

• 物流业务中,根据订单信息(收货城市和发货城市)统计:同城的订单情况

• 金融业务中,根据交易信息、客户信表、地区信息查询:在指定时间段内不同地区不同客户类型的交易金额和次数

• 石油业务中,根据油井信息、产量信息以及传感器数据查询:某个油井在指定时间段内每分钟的平均石油和天然气产量,以及平均温度

• …

还有更复杂的情况,涉及自关联和循环关联几乎所有产品都没戏了。

..

出现这些问题的原因在 SQL 上。因为数据常常是存储在关系数据库中,一般也就是使用 SQL 来做查询。而 SQL 对关联运算(JOIN)的定义很简单,两个表关联时,给出对应的关联字段就可以了,除此之外没有更多的信息和约定。这种简单的规则,在关联表多的时候就会让很多人晕掉。

要从根本上解决关联问题就必须重新定义 JOIN。梳理一下会发现,所有有意义的关联查询都涉及主键(多对多几乎没有业务意义,即使发生也能转换成针对主键的查询)。针对这个特性,将关联运算进行了分类,在此基础上发明了 DQL(Dimensional Query Language)一种基于维度的查询语言,从根本上解决 SQL 处理关联问题面临的困境,进而为 BI/ 灵活查询提供服务。

目录

本课程包含以下内容:

1.DQL 原理

了解 DQL 看待 JOIN 的方式,熟悉 DQL(产品)运行原理

2.DQL 概念和语法

学习 DQL 涉及的主要概念及查询语法

3. 应用集成

学习如何在 Java 中集成调用 DQL

4. 集算器 DQL

学习基于文件查询的 DQL 使用,了解其应用场景

环境准备

学习本课程前需要事先安装产品和下载数据 / 程序文件。

产品

润乾报表: 润乾报表 最新版发布啦『发布日期 20250520』
SPL 企业版: 集算器 (SPL) 最新版发布啦『发布日期 20250605』

数据及程序文件

随安装包附带。

http://www.dtcms.com/a/310690.html

相关文章:

  • QT6 源,十章绘图(2)画刷 QBrush:刷子只涉及填充颜色,线型,填充图片,以及变换矩阵这几个属性,附源代码带注释。
  • 使用全连接神经网络训练和预测MNIST以及CIFAR10
  • 十、SpringBootWeb快速入门-入门案例
  • 玻尔兹曼分布与玻尔兹曼探索
  • 户外广告牌识别误检率↓78%!陌讯动态感知算法实战解析
  • 力扣面试150题--数字范围按位与
  • 【文章素材】ACID 原子性与数据库
  • 五自由度机械臂阻抗控制下的力跟踪
  • 神经网络学习笔记
  • 台式机 Server 20.04 CUDA11.8
  • JAVA,Filter和Interceptor
  • ThreadLocal总结
  • 基于倍增的LCA + kruskal重构树 + 并查集
  • 可编辑234页PPT | 某制造集团供应链流程分析和数字化转型解决方案
  • JavaScript 语句和函数
  • ensp防火墙安全策略实验
  • 【全网首个公开VMware vCenter 靶场环境】 Vulntarget-o 正式上线
  • Linux权限提升
  • shell编程练习,实现循环创建账户、测试主机连通性、批量修改主机root密码等功能
  • Linux 用户与组管理:从配置文件到实操命令全解析
  • Lecture 7: Processes 4, Further Scheduling
  • 嵌入式系统中常用通信协议
  • 高压大电流与低压大电流电源的设计难点
  • QT中重写事件过滤失效(返回了多个事件)
  • Jetpack Compose Column组件之focusProperties修饰符
  • 基于C#和NModbus4库实现的Modbus RTU串口通信
  • 【工具分享】模拟接口请求响应的Chrome插件ModResponse
  • 光伏运维数据透明化,发电量提高45%
  • Cursor免费使用工具
  • 配置多数据源dynamic-datasource 开箱即用方案​