151-模型-Power BI&Power Pivot模型DAX函数使用量分析
151-模型-Power BI&Power Pivot模型DAX函数使用量分析
1、背景
我们在 Power BI 或者 Power Pivot 项目中会写很多的 DAX 表达式。在最后项目交付的时候,我们也想看看我们的 DAX 到底写了多少,那么应该怎么去实现呢。
我们先来看看最后的效果。

我们也把文件这个 Power BI 报告发布到了公共的 web 上大家可以通过下面的链接查看。
URL:https://jiaopengzi.com/demos/pbi/151-full.html
上图度量值对应课程:https://jiaopengzi.com/video/video-101
2、模板复用
我们已经把这个度量值 DAX 使用量的分析做成了模板,只需要把你的度量值直接放进去就可以得到属于你的度量值使用量分析报告了。
步骤1
打开你的 Power BI 或者 Power Pivot 模型,使用 DAX Studio 连接上模型。同时在编辑框里面输入:
select * from $SYSTEM.MDSCHEMA_MEASURES

步骤2
输入上述代码后,选择导出文件。

步骤3
点击左上角运行(Run);选择Unicode的类型,导出的数据对中文友好,不乱码。
默认是UTF8类型,这也是很多人在用 DAX Studio 导出数据时,总是中文乱码的原因。

步骤4
导出的csv文件,放在我们的模型的csv文件夹里面,名称随意。
步骤5
打开模型文件,进入到 Power Query 界面,把 Path 参数修改为你自己的路径,最后不需要加上 “\” ,点击关闭并应用。

步骤6
点击刷新,等待片刻后就得到了我们自己度量值 DAX 函数的用量分析了。

3、模板应用结果展示
我们来看看另外两个模型的度量值 DAX 用量分析结果。
Power BI 展示
这个是我们之前文章《Power BI Report Server之某消费品运营数据监控》的示例文件的度量值结果。
这也是一个企业的实际案例,可以看到其实用不了多少 DAX 函数就可以得到一份 Power BI 报告,有兴趣可以根据URL去看原文。
URL:https://jiaopengzi.com/670.html

Power Pivot 展示
我们再来看一个 Power Pivot 的展示结果,这是一个也是综合的案例。由于数据脱敏的原因,后面这个两个文件就不会共享出来。我们只看一下这个度量值的 DAX 用量的分析结果。

4、思路解析
我们想要分析度量值里面的 DAX 函数用量,首先要拿到所有的度量值,这个可以通过 DAX Studio 和 Tabular Editor都可以实现,本案例是用的DAX Studio实现的。
度量值拿到了以后,我们需要对度量值进行分词,起初我是用的Python来分词的,来回倒反而不方便,后来直接用PQ来实现,其中关键的PQ函数就是 Text.SplitAny ,通过分词以后我们就可以拿到度量值里面的所有 DAX 函数了;这就是分析中的事实表。
接下来就是 DAX 分析的维度表,最开始我是用 DAX Studio 导出来所有 DAX 函数,发现其实里面的函数分组有一些问题并且和官方文档的函数分组有差异,索性就放弃了这个方式,直接用PQ去爬去的官方文档。
我们来看看两个分组的区别。

最后维度表拿到了以后,我们就可以直接分析了,当然我们分析就做了一个词云的分析以及使用的数量排名,大家也可以根据自己的需求做更多的分析。
5、总结
- 这个案例的使用主要还是对有相当基础的,初学者不必过多去研究如何做的,直接套用模板使用即可。
- 度量值几乎没有难度,主要是 PQ 对维度表在官方文档的爬去有一定难度。
附件下载:https://jiaopengzi.com/2582.html
by 焦棚子
151-模型-Power BI&Power Pivot模型DAX函数使用量分析的更多相关文章
- 155_模型_Power BI & Power Pivot 进销存之安全库存
155_模型_Power BI & Power Pivot 进销存之安全库存 一.背景 谈进销存的概念时,我们也需要提及另外一个概念:安全库存. 库存周转在理想的状态下是做到零库存,但是在内部 ...
- Microsoft宣布为Power BI提供AI模型构建器,关键驱动程序分析和Azure机器学习集成
微软的Power BI现在是一种正在大量结合人工智能(AI)的商业分析服务,它使用户无需编码经验或深厚的技术专长就能够创建报告,仪表板等.近日西雅图公司宣布推出几款新的AI功能,包括图像识别和文本分析 ...
- .NET平台开源项目速览(19)Power BI神器DAX Studio
PowerBI更新频繁,已经有点更不上的节奏,一直在关注和学习中,基本的一些操作大概是没问题,更重要的是注重Power Query,M函数,以及DAX的使用,这才是核心. 上个月研究了DAX的一些 ...
- 小目标 | DAX高级实践-Power BI与Excel联合应用
· 适用人群:数据分析专业人士,在数据分析方向需求发展人士 · 应用场景:数据汇报.数据可视化展现.数据建模分析 · 掌握难度:★★★★☆ 本期讲师 DAX高级实践-Power BI与Excel联合应 ...
- 2019微软Power BI 每月功能更新系列——3月Power BI 新功能学习
Power BI3月产品功能更新发布啦!本次新功能新增了热图和单选切片器:完善了新的DAX功能和对现有功能的改进(例如按钮和选择窗格):同时官方表示建模视图的全面改进也正在进行中~Woo~那么,本月更 ...
- 2018 ,请领取您Power BI 年终报告
Power BI365 3Jan 2019 新年已至,岁寒温暖! 为方便Power BI用户们能快速找到所需要的Power BI各类型文章,小悦将2018年Power BI的所有精彩文章按照各应用场景 ...
- 您应该将报表从Excel转换为Power BI的8个原因
传统上,Microsoft Excel是企业的首选报告工具,但Power BI为企业提供了强大的分析和报告功能.通过快速实验可视化,广泛数据集的统计功能和计算,以及快速重组字段动态获得答案的能力,很明 ...
- Power BI免费版(Free),专业版(Pro)以及增值版(Premium)授权功能对比, Server
Features of Power BI Report Server and the Power BI service Features Power BI Report Server Power BI ...
- 123_Power Pivot&Power BI DAX函数说明速查
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 说明 1.基于DAX Studio 2.9.2版本导出整理: 2.DAX Studio网站,及时更新下载,DAX学习利器: ...
随机推荐
- 顺利通过EMC实验(9)
- Top 15 - Material Design框架和类库(译)
_Material design_是Google开发的,目的是为了统一公司的web端和手机端的产品风格.它是基于很多的原则,比如像合适的动画,响应式,以及颜色和阴影的使用.完整的指南详情请看这里(ht ...
- 在微信小程序中绘制图表(part2)
本期大纲 1.确定纵坐标的范围并绘制 2.根据真实数据绘制折线 相关阅读:在微信小程序中绘制图表(part1)在微信小程序中绘制图表(part3) 关注我的 github 项目 查看完整代码. 确定纵 ...
- html5 canvas基础10点
本文主要讲解下一些canvas的基础 1.<canvas id="canvas">若此浏览器不支持canvas会显示该文字</canvas> //创建个ht ...
- vscode代码格式化快捷键及保存时自动格式化
一.实现vs code中代码格式化快捷键:[Shift]+[Alt]+ F 二.实现保存时自动代码格式化: 1)文件 ------.>[首选项]---------->[设置]: 2)搜索 ...
- 十、包机制与JavaDoc
一.包机制 为了更好的组织类,Java提供了包机制,用于区别类名的命名空间. 包语句的语句格式为: package pkg1[. pkg2[. pkg3...]]; 一般使用公司域名倒置作为包名:例如 ...
- uTools .SRT 转 .VTT 格式转换自动化小工具
不想用网上的转换工具,要有网,先上传,再下载,可能还要看广告.有些工具也不是很方便.打算配合uTools的自动化助手插件搞一个一键格式转换.
- gin框架使用【3.路由参数】
GET url: http://127.0.0.1:8080/users/{id} http://127.0.0.1:8080/users/1 对于id值的获取 package main impo ...
- HMS Core Discovery第14期直播预告~纵享丝滑剪辑,释放视频创作力
[导读] 拍摄.导入.特效.卡点.BGM-几步简单的操作,我们便可将生活的瞬间用视频记录与分享.应用前沿AI技术,提供一站式视频处理能力,帮助开发者们构建更智能.更易用.更专业的视频剪辑软件,打造视频 ...
- Android第五六周作业
1.返回键实现对话框弹出是否退出应用程序 package com.example.zuoye1; import androidx.appcompat.app.AlertDialog; import a ...