月下旬更新速递丨 实战场景深化、集成能力升级与开发进阶

初冬来临,一波热气腾腾的更新也准时抵达!我们聚焦实战技巧、集成增强与开发进阶,一系列新功能与新教程,助你在数据分析与系统开发的效率上再进一步。

一、实战技巧精讲

雷达图:多维度数据的“透视镜”,3步读懂数据真相》→ 聚焦雷达图核心应用场景,快速掌握多对象、多维度数据的可视化分析方法。

用图表解锁你的生活“数据密码”!》→ 探索图表在日常场景中的应用,让数据解读更直观、更具操作性。

二、直播上线

2025新特性实战解读(上)数据分析效率倍增秘籍》→ 解析2025新特性落地路径,助力实现数据分析效率成倍提升。

三、技术经验分享

【专家分享】数据排序的“权力游戏”:优先级规则决定谁先谁后》→解读高级排序的业务配置逻辑,让关键数据始终处于优先展示位置。

四、二次开发视频

扩展包开发知识点——前端改造》→从需求分析入手到最终实现的全流程讲解,帮助您快速入门上手Smartbi前端改造。

五、任务持续上线

【初级任务】解锁生活“数据密码”,可视化创意实践任务》→发起可视化创意任务,推动数据表达更生动、更具趣味性。

【初级任务】玩转雷达图解数据,200麦豆等你拿!》→推出雷达图实战任务,以激励方式提升多维数据分析技能。

六、全新素材上线

AD域(LDAP/LDAPS)登录验证V2》→扩展域账号登录支持,实现与企业Windows认证体系无缝对接。

数据模型:对接RestfulAPI接口》→打通数据模型与RestfulAPI对接通道,提升系统集成与数据获取效率。

计划任务:定时清空用户属性缓存→引入缓存自动清理机制,确保权限变更实时生效、业务数据及时更新。

用户同步:BI系统自定义用户所属组》→优化用户组同步逻辑,实现自定义组信息自动识别与补全。

审核流程:可以调用自助ETL》→增强审核流程集成能力,支持在用户任务节点直接调用自助ETL过程。

麦粉社区
>
帖子详情

[数据准备] 【上篇】计算列 vs 计算度量:你真的懂吗?

动态中心 发表于 2025-4-2 08:56
发表于 2025-4-2 08:56:42

在玩转数据模型的过程中,你是不是也被这些小烦恼缠上啦:



  • 计算列到底是个啥?计算度量又是什么神秘 “物种”?

  • 计算列和计算度量之间,到底藏着什么不同的小秘密?

  • 碰到具体问题时,该怎么挑计算列和计算度量呢?


IMG_256


 


首先,计算列、计算度量的存在,主要是辅助我们在创建模型时更好的进行二次计算,那先来说说为啥要二次计算?


打个比方,数据源就像一个食材库,可有时候,里面缺了咱们做菜(分析数据)要用的食材,这时候就得自己动手加工一下,比如把数据 “切一切”(分割)、给字段类型 “换换装”(转换),或者求个平均值、找同期值啥的。


 


注意:这里有个关键的知识点要划重点啦!与报表层面进行二次计算不一样的是,模型定义是全局二次计算,也即我们在数据模型层面定义了一个计算逻辑,它就能在多个报表或多个组件复用。


 


下面就让我们一个个来揭开计算列、计算度量它们背后的神秘面纱吧!



  • 计算列是在V10.5.15的产品新增的,直接将字段添加到原始查询中的字段,成为子查询像数据源表的一部分参与运算。

  • 计算度量则是使用MDX语法定义的度量,基于已有的度量数据展开计算。


两者的含义、作用、创建方式对比详情见下表:


 









































分类



计算列



计算度量



定义



在表中新增列,每行值由自定义公式生成



在多维数据集(OLAP)中通过 MDX 表达式定义,基于已有度量进行二次计算



计算顺序



基于表中现有字段列,逐行计算,先于汇总操作



基于已有的度量值,先汇总数据,再基于汇总结果计算



作用层级



表结构层面,新增列成为表的一部分,作用于数据表内每行数据



度量层面,基于现有度量进一步运算,属于跨维度聚合数据(如按时间、产品类别汇总后计算)



创建入口



数据模型右侧维度区 “+” 号 或 仪表盘报表开发界面的数据维度区 “+” 号



数据模型右侧度量区 “+” 号 或 仪表盘报表开发界面的数据维度区 “+” 号



创建方式



直接进入编辑界面,手动编写表达式(支持字段选择和函数拖拽)



两种方式:


1. 向导式(内置时间计算、数学运算等模板,支持拖拽字段快速创建);
2. 复杂方式(手动编写 MDX 函数,支持函数搜索和示例参考)



支持函数



使用数据库函数或平台内置函数(如数值、文本、日期处理函数)



除了内置函数(含时间计算、聚合函数、逻辑判断等),还支持调用 MDX 的函数,官方文档



 


由于两者创建方式和计算方式略有不同,最终操作步骤和对应得出的结果也会有所差异,详情如下:


 


1、新建计算列,字段皆来自于表字段



  • 入口:在数据模型右侧维度区右上方“+”号或仪表盘报表开发界面的数据维度区右上方“+”号入口都可以新建计算列使用,如图:


 



 



  • 新建计算列:在这个界面中,有表达式编辑框、字段选择栏以及选择函数使用栏,可以根据实际需求,利用这些功能进行相关定义:


    注:若是指标模型创建的数据模型,暂不支持新建计算列。


 


 



 



  • 例如我们创建的销售额计算列就是拖拽对应表的字段进行计算即可,如图:


 



 


2、新建计算度量,字段可来源于维度、度量、成员、命名集



  • 入口:在数据模型右侧度量区右上方“+”号或仪表盘报表开发界面的数据维度区右上方“+”号入口都可以新建计算度量使用,如下图:


 



 



  • 新建计算度量:

  • 向导方式(方式一):简单选择进行快速计算 : 实现同期、前期、累计值等,此页签界面主要是提供内置的数学运算、时间计算以及其他计算类型,也即可通过简单的拖拽操作快速创建所需的计算度量,如下图:


 



 



  • 函数方式(方式二)使用mdx函数来实现各种复杂场景下的高级计算,可看到右侧边栏很多内置函数,点击函数可看左下方的说明和示例;



  • 例如我们新建销售额计算度量就可以选择函数方式创建,如图:


 



 


3、创建报表,拖拽计算列和计算度量对比结果:



  • 拖拽销售额计算列展示,可看到是按行输出销售额计算列结果:


 



 



  • 查看系统监控——SQL/MDX监控,涉及的区域和销售额计算列都是从业务数据源通过SQL查询,并且销售额计算列是在原表直接处理,然后和其他表字段一并输出:


 



 



  • 拖拽销售额计算度量展示,可看到销售额计算度量是汇总聚合后的结果:


 



 



  • 查看系统监控——SQL/MDX监控,涉及的区域是从业务数据源通过SQL查询,但是销售额计算度量是在对原表数据分类汇总处理后,再基于汇总结果也即对已有的度量进一步计算处理:


 



 



  • 若把销售额计算列右键复制转度量,再拖拽销售额计算列-对应的度量进行展示,可看到也是根据维度分类聚合计算后输出销售额计算列-度量的结果:


 



 



  • 同样,查看系统监控——SQL/MDX监控,涉及的区域和销售额计算列都从业务数据源通过SQL查询,并且销售额计算列是在原表直接处理,但与维度区普通销售额计算列不同的是,销售额计算列-对应的度量会进行多一层sum的汇总计算,然后再和其他表字段一并输出:


 



 


学习计算列和计算度量两者含义、作用、创建方式和对应结算结果差异后,我们继续来看看两者的应用场景有何区别,常用应用场景对比说明如下表:


 










































































































说明



场景说明



相同之处



(1)均支持数值计算、逻辑判断、日期处理等基础功能;
(2)均可通过自定义公式或函数扩展数据处理能力;
(3)均支持对原始数据进行分类、逻辑判断等。



计算列-
常用场景




  • 转换数据格式、转换数据类型、或取整:



把数值或者日期转换成字符串,使用TOSTR函数;



IMG_256



将时间戳转换成日期格式,使用UNIXTIMETODATE函数;



IMG_257



将字符串类型数据格式转换成日期格式,使用STRTODATE函数;



IMG_258



对字段取整,使用TOINTEGER函数;



IMG_259




  • 求明细数据对应某个日期前X天/年/月/季或日期时间差值等的日期时间计算:



获取当年第一天,可以通过YEAR函数获取当前年,再用CONCAT函数进行拼接;



IMG_260



返回日期之间的天数差,使用DATEDIFF函数;



IMG_261




  • 对原始数据分类判断使用:



对原始数据分类使用IIF函数判断;



IMG_262



对数据表数据的值进行case when判断再应用,可以使用计算列构造出是否



IMG_263



计算度量-
常用场景




  • 对度量做复杂计算,方差、中位数等:



求销售收入的期末值,Tail函数和filter函数结合处理;



IMG_264



求销售额的年方差,使用VAR函数;



IMG_265



查询各个产品类别销售额的中位数,使用Median函数;



IMG_266



查询销售额的4次方根,使用Power函数;



IMG_267




  • 汇总计算:



计算近两个月的销售额,使用AGGREGATE函数和ParallelPerodex函数结合处理;



IMG_268



指定维度进行汇总,使用Fixed函数;



IMG_269



按多个维度进行过滤汇总,aggregate函数和nonemptycrossjoin函数结合处理;



IMG_270




  • 对汇总数据排名、比较、分类处理:



查询各个产品销售额的排名情况,使用rank函数;



IMG_271



计算两个时间段的比值,使用AGGREGATE函数;



IMG_272



对汇总后数据做判断,对度量进行case when判断处理;



IMG_273



 


在本篇文章中,我们系统地梳理了数据模型中计算列与计算度量这两个核心概念的技术内涵和常用场景,不仅清晰界定了计算列与度量值的技术定义,还结合常用应用场景演示了两者的操作和作用差异,对比了两者在操作入口、作用范围、计算逻辑等方面的特性,相信我们对计算列和计算度量都有了一定的了解!


 


那么新问题来了,当遇到不同业务场景需求我们如何快速选用计算列还是计算度量,确保业务展示结果正确性呢?


诚邀您继续关注【下篇】计算列 vs 计算度量:你真的懂吗?——如何选用计算列或计算度量吧~


 


【有奖互动】亲爱的数据达人们,我们诚挚邀请您分享对于选用计算列还是计算度量的示例,精彩回复将获得惊喜麦豆奖励!让我们一起来探讨这个数据分析中的经典话题吧!


 

发表于 2025-4-3 11:29:44
所以明细行上的运算就用计算列,需要汇总后的运算就用计算度量,是这样的吗
打赏人数1麦豆 +10 收起 理由
麦本麦 + 10 太棒了,给你32个赞,么么哒

查看全部打赏


回复

使用道具 举报

发表于 2025-4-3 11:29:57
收藏

回复

使用道具 举报

发表于 2025-4-3 14:04:09


所以计算列就像源表里的字段一样,可以在这里预览看到。

打赏人数1麦豆 +10 收起 理由
麦本麦 + 10 我看好你哦

查看全部打赏


回复

使用道具 举报

发表于 2025-4-3 14:05:50
但是我用iif函数,判断维度的话,好像就必须要拖对应维度才会显示正常了,但是我只是想获取出来某个维度数据那个数值是多大。这是得用计算列?
  •   我想退休~
    你这种是单纯要展示那个类别下的汇总数据吧,可以试试用计算列,然后用case when这样子判断维度数据,满足要求就是原始值,不满足0,再汇总?
    2025-4-3 15:00| 回复
  •   麦本麦
     回复 我想退休~
    2025-4-8 17:35| 回复

回复

使用道具 举报

发表于 2025-4-7 10:57:31
总结得好,我正好想知道计算列和计算度量。关注了。

回复

使用道具 举报

发表于 2025-4-7 14:26:40
个人习惯
简单sql函数用计算列,聚合窗口函数不在内;
复杂分类用计算度量
打赏人数1麦豆 +10 收起 理由
麦本麦 + 10 太棒了,给你32个赞,么么哒

查看全部打赏

  •   麦本麦
    也算是通俗的方式,我们下篇具体场景也出来咯,可以移步再学习学习呢
    2025-4-8 17:36| 回复

回复

使用道具 举报

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

13回帖数 1关注人数 7433浏览人数
最后回复于:2025-4-10 10:18
快速回复 返回顶部 返回列表