麦粉社区
>
帖子详情

欢迎来到被数据模型统治的Smartbi

干货分享 发表于 2025-2-13 09:59
发表于 2025-2-13 09:59:40

新用户初见 V11 里的数据模型,新奇得像打开了神秘世界大门,迫不及待想一探究竟。


老用户升级到V11 后,却像闯入陌生领域,对数据模型 “当家” 满心疑惑。肯定都在想:SQL 用得好好的,为啥要引入数据模型?它比 SQL 强在哪?要是必须用,该怎么掌握它? 这满腹疑虑,今天就在这里为大家解个小惑,进入数据模型的世界。


 



 


为什么现在只有数据模型?


对于老用户来说,升级到V11后:诶嘿!怎么不能新建原生SQL数据集、业务主题呢?为啥只能新建数据模型了呢!


其实问题主要出在旧版本的设计上:



  1. 概念太多记不住:以前产品里又是数据集又是业务主题,光名字就一大堆。根本分不清什么时候该用哪个,就像超市货架上摆满包装相似的调料瓶,厨房小白根本不知道该选哪瓶;

  2. 操作入口像迷宫:各个功能的入口东一个西一个,就像家里遥控器按键乱排布,想开个空调都得把所有按钮试一遍,经常转了几圈都找不到正确入口;

  3. 功能配合总打架:最头疼的是数据管理和界面展示混在一起,就像炒菜时盐罐糖罐放反了,总找不到。比如:



  • 做即席查询时,用不了数据集;

  • 做电子表格时,又用不了业务主题;


这些矛盾让新手完全摸不着头脑,就像拿到一副缺零件的拼图。


 


新版本用"数据模型"一招解决所有问题



  1. 操作简单:就像把所有工具收进一个万能工具箱,数据处理统一通过数据模型完成;

  2. 接口统一:所有功能入口都归整到模型里,升级维护像收拾好的衣柜一样方便;

  3. 自由组合:无论是即席查询、透视分析还是电子表格,都能直接调用模型里的数据,就像乐高积木随便拼搭都不会出错。


诶,那前面我们大致了解了为啥新版本会有数据模型这么一个“大哥”存在,现在我们就来了解了解下这位大哥他能力到底有多强吧~


 



 


数据模型的定义


首先我们来了解下数据模型的定义。它是一个数据处理中间层,对不同来源的数据进行整合,定义维度和指标,进行数据加工、计算,为所有可视化组件提供标准、统一的数据结构。



 


数据模型的能力


能力1:接入、整合多种数据集


数据模型整合多种数据集类型,融合线上线下数据。包括数据源表、SQL查询、即席查询、导入文件等,并支持跨库数据增和。可以直接连接Oracle、MySQL、Excel文件等各类数据关联分析,满足不同用户的数据准备需求,提升数据分析的效率。


 



 


能力2:支持敏捷建模


Smartbi数据模型支持拖拽等简单操作即可快速生成度量、维度层次,如一键生成时间维、设置地理维等,同时支持多种模型类型,包括星型模型、雪花模型和星座模型。


 


能力3:计算能力提升并统一


数据模型对Smartbi产品数据准备和数据分析之间的关系进行了重新梳理,统一了表现层和数据层,统一了数据分析的计算能力,提供了丰富、强大的计算能力,不仅支持SQL计算、ETL分布式计算、MDX计算;还支持快速实现同环比时间计算、占比、排名、累计等;同时支持在计算中使用参数,动态获取结果。



能力4:高速缓存库MPP


数据模型同样支持抽取模式,将模型的数据抽取到SmartbiMPP数据库中提升查询效率,计算速度会更快。但同时数据也需要定期更新。



经过上面的了解,数据模型是否真的能够包罗万象,实现全领域接入并解决所有问题呢?答案显然是否定的。正如任何技术都有其局限性,数据模型同样存在无法有效应对的应用场景。让我们接着往下了解吧~


 


数据模型当前限制


1、目前不支持接入多维数据库,模型中接入不同的数据库表时需要切换成抽取模式;


2、数据源表就不支持映射参数;脚本查询、Java查询这些就不支持直连模式。


3、目前Smartbi暂未直接支持多对多的关系,如现实业务是多对多的关系,建议中间增加一张关系表,然后原始的两张表和这张中间关系表变成一对多的关系。


4、计算列不支持跨表创建,分组字段不支持计算列、度量等字段。


 


呐,在我们对数据模型有个简单的了解后,大家肯定都很好奇,那我要怎么使用这个数据模型呢?我是不是把所有我要的字段、查询信息全部放到一个数据模型里面呢?这当然不是的,要用好数据模型,那我们还得先知道下基础的建模知识。


 


 


数据模型是围绕事实表和维度表的关系而进行模型的构建,首先我们先来看看什么是维度和指标。



  • 维度其实就是观察问题的角度,是你用来“分类”“分组”或“观察”数据的标签,就像看世界的不同“滤镜”。比如你想知道“北京地区的手机在2023年卖了多少”,这里的时间、地区、产品都是维度。

  • 指标就是被计算的数值,通常是数字,比如总和、平均值等。比如你想知道“北京地区的手机在2023年卖了多少钱”,这里的“钱”就是度量(销售额的总和)。


那清楚了维度和指标的概念后,对应的维度表和事实表也就很容易理解啦~



  • 维度表就是以合适的角度来创建的表,分析问题的一个角度:时间、地域、终端、用户等角度。

  • 事实表是存储必然存在的一些数据,像采集的日志文件,订单表,都可以作为事实表。


当我们知道事实表,维度表这些概念了,但是实际业务中,给了我们一堆数据,我们怎么拿这些数据进行建模呢?这里就需要我们的建模四步走了:


1、选择业务过程:这一步需要我们定下重点,先想清楚老板最关心的是啥?


2、声明粒度:其实就是记得详细点,数据要细到每一笔交易;


3、确认维度:这一步就是一个打标签的环节,给每个数据贴分类小纸条,比如给谁买的?啥时候买的这些;


4、确认事实:最简单的理解就是只抓数字,只记住能算钱的数,比如买了多少杯,一杯多少钱。


 


总的来说就是我们在建模的时候可以:“先盯问题 → 细记流水账 → 分类贴标签 → 只留算钱数!”


像记账:记清每一笔(细),按时间/商品分类(标签),最后算总收入(数字)



前面说的这么多是不是弯弯绕绕的?!没得事,我们先来看看一个简单的示例。


场景:一个成交量的交易记录,一个保有量的交易记录,“产品代码”列有部分重叠。



 


需要实现如下的效果:


 



 


清楚案例的场景和要实现的效果后,可能有的小伙伴就会在数据模型中直接将AB两表进行关联。


 




 


那实际上这样的处理会存在一定的问题:


1、查询时,不知道应选A表还是B的产品代码。


2、基数怎么变换结果也都是错的。


3、查询结果不正确。


 


而如果使用前面提到的维度建模的方式建模:将AB两表的产品代码字段抽出来作为一个单独的维表后,与AB两表分别根据产品代码字段关联后,优势就有很多啦。比如后续业务用户只需要根据产品代码维的维度进行查询,且查询结果也是正确的。另外就是开发人员在设置基数的时候更容易设正确。


 



 



 


好了,朋友们!今天主要就是数据模型入个门,大家都记住了哈。V11的数据模型处理旧版问题真香!效率直接起飞~用的时候遇到问题别慌,摸着石头过河说不定就搞定啦!大家一起把它变成数据分析的得力小助手,挖掘宝藏信息,助力业务决策吧!


 


下一期我们会给大家介绍如何正确设置模型关系,敬请期待哦~


 



在开启下一篇文章之前,先来一道小题目熟悉一下模型关系的设置,感兴趣的小伙伴可以提前动手,在评论区留下您精彩的解答



  • 第1个回答正确,奖励50麦豆;

  • 第2-3个回答正确,奖励20麦豆;

  • 第4-5个回答正确,奖励5麦豆;


大家可以积极参与哦,最终结果会在2025年3月3日揭晓~~


 


题目:以下图的示例数据来说,产品类别表、产品表、销售明细表、年份表,假设想要筛选销售量大于100的产品类别有哪些,四个表的表关系应该如何设置?


 



 


 

发表于 5 天前
天天吃细糠,有点遭不住了
  •   麦本麦
    诚邀参与最后小提问哦~
    5 天前| 回复
  •   蹦蹦炸弹
     回复 麦本麦
    哦哦,忘记答题了,产品表通过ProductID字段一对多销售明细表,
    产品类别表通过CategoryName字段一对多产品表,
    年份的话,好像这个题目没有要求,但是看这个要也是通过Year字段一对多销售明细表
    5 天前| 回复

回复

使用道具 举报

脑子动不起来了,有没有大神答一下
呜呜呜

回复

使用道具 举报

旧版本的原生sql数据集 怎么迁移到V11呢,导了一份资源出来给人家,人家恢复后没有数据集,用不了
  •   麦本麦
    导入资源一般是由的,但是需要看下有没有加开启旧数据集,参考这个文档开启:https://wiki.smartbi.com.cn/pages/viewpage.action?smt_poid=43&pageId=92093071
    如果开启了也没有,得看看许可有没有包含
    5 天前| 回复
  •   橘猫今天喝水了吗
     回复 麦本麦
    好的,我让他们看看
    5 天前| 回复

回复

使用道具 举报

本帖最后由 橘猫今天喝水了吗 于 2025-2-17 15:35 编辑

销售表和产品表,用ProductID相等,多对一,单向,


产品表和产品类别表,用CategoryName 相等,多对一,单向。


也可以顺序反过来,用一对多。


也可以双向。


年份表和销售表用Year相等,

回复

使用道具 举报

类别表一对多产品表 关联条件categoryname,
产品表 一对多销售明细表,关联条件productID,
回复

使用道具 举报

发表于 5 天前
产品类别关联产品表,1对多,用categoryname关联
然后产品表关联销售明细表,用productid关联,一对多
不过为啥还要单拎出年份表,这个场景下不要也可以
回复

使用道具 举报

发表于 5 天前

把题目的表拉进去,模型帮我自己建好了关系。



看起来,没啥问题耶(^-^)V

回复

使用道具 举报

发表于 5 天前
顾着做题冲击麦豆,这才开始看干货,点赞点赞点赞!
回复

使用道具 举报

赞一个~~~
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

16回帖数 1关注人数 586浏览人数
最后回复于:2025-2-24 10:07
快速回复 返回顶部 返回列表