Quick BI 的模型设计与生成SQL原理剖析

简介: 本文介绍Quick BI如何进行维度建模,基于维度模型如何来自动化的生成分析查询的SQL语句,从而使数据分析变得更容易。


一、摘要

随着物联网的告诉发展,数据量呈现井喷式的增长,如何来分析和使用这些数据,使数据产生商业价值,已经变得越来越重要。值得高兴的是,当前越来越多的人已经意识到了用数据分析决定商业策略的重要性,也都在进行着各行各业的数据分析。众所周知数据分析的核心是数据,为了更容易的分析数据,数据模型的设计需要遵循一定的规范。当前最流行的联机分析处理(OLAP)的规范为维度建模规范。本文介绍Quick BI如何进行维度建模,基于维度模型如何来自动化的生成分析查询的SQL语句,从而使数据分析变得更容易。

 

关键字: Quick BI、OLAP、维度建模、SQL

 

二、维度模型的分类

OLAPOn-line Analytical Processing联机分析处理)根据存储数据的方式不同可以分为ROLAP、MOLAP、HOLAPROLAP表示基于关系数据库存储的OLAP实现(Relational OLAP),以关系数据库为核心,以关系型结构进行多维数据的表示和存储;MOLAP表示基于多维数据存储的OLAP实现(Multidimensional OLAP);HOLAP表示基于混合数据存储的OLAP实现(Hybrid OLAP),如低层用关系型数据库存储,高层是多维数组存储。接下来主要介绍基于关系型数据库的ROLAP的建模原理。

ROLAP将多维数据库中的表分为两类:事实表和维度表。事实表用于存储维度关键字和数值类型的事实数据,一般是围绕业务过程进行设计,例如:销售事实表,一般来存储用户在什么时间、地点购买了产品,销量和销售额等信息。维度表用于存储维度的详细数据,例如销售事实表中存储了产品维度的ID,产品维度表中存储产品的名称、品牌信息,两者通过产品ID进行关联。

ROLAP根据事实表、维度表间的关系,又可分为星型模型(Star Schema)、雪花模型(Snowflake Schema)

1.星型模型

星型模型它由事实表FactTable)和维表(DimensionTable)组成。事实表中的维度外键分别与相对应的维表中主键相关联,关联之后由于形看起像是一个星星,所以形象的称为星型模型。以下示例为星型模型:其中sales_fact_1997为事实表,存储客户在某个时间、某个商店、购买了某个产品,购买量和销售额的信息,记录的是一个下单过程。事实表sales_fact_1997通过外键product_id、customer_id、time_id、store_id分别与维度表product(产品维表)、customer(客户维表)、time_by_day(时间维表)、store(商店维表)相关联,关联关系为多对一关联。

df31fe41fa0622ef83dc026e946e919b4de2e356

2.雪花模型

雪花模型是当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像一个雪花,故称雪花模型下面示例product(产品)维度表与product_class(产品类别)维度表通过product_class_id相关联,关联关系为多对一。product_class没有与sales_fact_1997事实表直接关联。

2865b750e07191c5aa456d12fb07f177584256f3


三、基于ROLAP模型的SQL生成原理

模型构建好了后,接下来的重点就是针对分析需求来生成满足分析需要的SQL语句,然后将SQL语句下发到DB中来查询数据,返回分析结果下面通过具体的需求场景来介绍如何生成SQL语句。

1.基于星型模型(或雪花模型)生成SQL

需求场景

按日期、产品查看总的销售额、销售量,日期限定在1997年,总销售额限定在1000元以上,结果按照总的销售额倒序排列,看前5个。

2865b750e07191c5aa456d12fb07f177584256f3 


2.生成SQL思路

1.分析需要用到的字段和表,目标是明确查询需要用到哪些表、表间关系、表上分组字段、聚合字段,确定SQL中select和from信息。

2.分析筛选条件,目标是明确SQL中where中需过滤的值。

3.分析分组维度,目标是明确SQL中group by的字段。

4.分析聚合后的筛选条件,目标是明确having中需要过滤的值。

5.分析需要排序的列和排序类型(升序还是降序)。

6.生成结果个数限制条件

7.根据以上信息生成查询SQL:

select 分组字段、聚合字段 from 表(含表关联) where 筛选条件 group by 分组维度 having 聚合后的筛选条件 order by 排序信息 结果条数限制。


3.生成SQL 

按照上面的步骤,和本例子中的需求,分析查询中的关键信息(以下步骤与生成SQL思路中的步骤一一对应)

1.用到的分组字段:the_dateproduct_name, 其中分组字段the_date为日粒度,需处理为年粒度:DATE_FORMAT(`the_date` , '%Y')

聚合字段:store_salesunit_sales,聚合方式都为sum;

用到的表:sales_fact_1997producttime_by_day;

表间关系:sales_fact_1997. product_id= product. product_id

   sales_fact_1997. time_id= time_by_day .time_id

2.筛选条件:

the_date`= STR_TO_DATE('1997-01-01 00:00:00' ,'%Y-%m-%d %H:%i:%s')

3.分组维度:DATE_FORMAT(`the_date` , '%Y')product_name

4.聚合后的筛选条件:SUM(`store_sales`) > 1000

5.排序:order by 聚合后的别名 desc

6.限制结果个数:limit 0,5

7.生成的SQL如下

a29860685012b578f69222e345bf0e035399d437


四、附录-用到的表

下面罗列出以上示例中用到的表的建表语句,需要在 MySQL数据库下执行,其他类型数据库需要做一些调整。

1.sales_fact_1997表

bd91c3b74a198298e47985d069e2c20540a3c57a

 


2.product表

58b960db115a6f28ad7e60629f7443feda0ba9c5



3.product_class表

c26b6f78b9cdd6e123050f42983f56e0c6de566b


4.time_by_day

a5236aa29be47bc22911a1a9714ee94c79367d3c



5.customer表

 07883568993a6f50feac9a48be5be535d009929e



6.store表

 642f29c2300fb19681397b7d5886e99ead4b9255


相关实践学习
助力游戏运营数据分析
本体验通过多产品组合构建了游戏数据运营分析平台,提供全面的游戏运营指标分析功能,并有效的分析渠道效果。更加有效地掌握游戏运营状态,也可充分利用数据分析的结果改进产品体验,提高游戏收益。
Quick BI在业务数据分析中的实战应用
Quick BI 是一款专为云上用户和企业量身打造的新一代自助式智能BI服务平台,其简单易用的可视化操作和灵活高效的多维分析能力,让精细化数据洞察为商业决策保驾护航。为了帮助您更快的学习和上手产品,同时更好地感受QuickBI在业务数据分析实践中的高效价值,下面将以一个真实的数据分析案例为场景带您开启QuickBI产品之旅。场景:假设您是一家大型互联网新零售企业的数据分析师,您的经理刚刚拿到8月份的月度运营分析数据,他发现近期企业运营状况不佳,8月份毛利额环比前几个月下滑较大,三季度存在达标风险。因此将这个任务交给了您,根据订单信息和流量渠道信息等相关数据,分析企业8月份毛利额下滑的关键要素,并将其分享给团队,以便指导相关业务部门采取决策和行动,提高企业整体毛利额。  
相关文章
|
2月前
|
传感器 数据可视化 搜索推荐
瓴羊Quick BI助力深圳光明环境水务公司举办水务数据应用大会暨第二届“光环杯”BI应用大赛
瓴羊Quick BI助力深圳光明环境水务公司举办水务数据应用大会暨第二届“光环杯”BI应用大赛
|
2月前
|
BI
Quick BI V5.0发布:一键解锁智能小Q等全新智能商业分析能力
Quick BI V5.0发布:一键解锁智能小Q等全新智能商业分析能力
|
3月前
|
SQL 测试技术 项目管理
轻松学习SQL外键约束的核心原理和实用技巧
轻松学习SQL外键约束的核心原理和实用技巧
48 0
|
4天前
|
SQL 自然语言处理 数据库
NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)以及工业级案例教学
NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)以及工业级案例教学
NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)以及工业级案例教学
|
1月前
|
SQL 存储 开发工具
vanna+qwen实现私有模型的SQL转换
本文档介绍了如何在本地部署Vanna服务以使用Qwen模型进行text2sql转换。首先,通过`snapshot_download`下载Qwen-7B-Chat模型,并安装相关依赖。接着,修改`openai_api.py`设置本地LLM服务接口。然后,安装并配置Vanna Flask服务,包括自定义LLM服务、连接数据库以及修改端口。为了解决内网访问问题,使用ngrok或natapp进行内网穿透,提供公网访问。最后,处理了chromadb包中自动下载资源的问题,以防网络不佳导致的失败。通过这些步骤,实现了使用本地Qwen模型的Vanna服务。
404 0
|
2月前
|
SQL 存储 缓存
SQL底层执行原理详解
SQL底层执行原理详解
|
2月前
|
SQL 存储 关系型数据库
MySQL索引原理以及SQL优化
MySQL索引原理以及SQL优化
66 0
|
2月前
|
SQL 编译器 网络安全
【网络安全 | SQL注入】一文讲清预编译防御SQL注入原理
【网络安全 | SQL注入】一文讲清预编译防御SQL注入原理
77 0
|
2月前
|
SQL 人工智能 自然语言处理
GPT- BI在中国一汽上线,大模型技术融入数智化转型
GPT- BI在中国一汽上线,大模型技术融入数智化转型
223 1
|
3月前
|
消息中间件 BI Serverless
消息队列推出serverless版、Quick BI升级至5.0……阿里云近期产品动态汇总
消息队列推出serverless版、Quick BI升级至5.0……阿里云近期产品动态汇总
478 1

热门文章

最新文章