power bi dax基础教程数据建模最佳入门_第1页
power bi dax基础教程数据建模最佳入门_第2页
power bi dax基础教程数据建模最佳入门_第3页
power bi dax基础教程数据建模最佳入门_第4页
power bi dax基础教程数据建模最佳入门_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Power BIDAX基础 BIPower BI DAX数据建模 应对复杂业务逻辑的基础(基础篇)Excel120思考不同类别的总利润率如何计算1*表和订单表是两个不同的表。 表和订单表是一对多。 总利润率无法简单聚合。需要这样的订单利润率合计 =SUM ( '订单'利润 ) / SUM ( '订单'销售额 )小提示也许一些BI工具也可以做到。考虑一个更复杂的:将A类客户并且在4月1日后累计额超过10000的定义为VIP客户,不同类目中各月VIP客户利润的整体有多大?(>100个类目,>10W客户,>500W笔)Excel表做不到 业务常常用表

2、搞Excel 120定业务指标计算 但很快就会遇到难题 数据量级瓶颈 复杂逻辑支持度不够 无法可交互的进行数据探索 业务Power BI DAX 为复杂业务建模(自助BI)而生 个人可以使用 Power BI DAX 且无需依赖企业 / ITExcel 120 (更好的:)如果企业已经开始使用微软BI系列: SQL Server / Azure SQL Server SSAS Power BI / Power BI Pro / Power BI Premium 业务可以使用 Power BI DAX 最大化生产力使用 Power BI 及 DAX 之前的传统商务智能El 120你要什么?我要算

3、VIP客户的同比增IT晕 这个指标又没有,传统BI长,用哪个指标?VIP客户是怎么定义的?商业业务又得找开发了。价值就上会开会说的A类用户并且累计消费超过10000的使用 Power BI 及 DAX 之后的自助式商务智能E还需要什么吗?咦?应该看看新上线后的留客能力对差不多了比老有多大提升。现在我们可以有分析再找你自助BI可以写个DAX来看看。好的IT业务商业价值没有对比就没有El 120传统BI自助BIIT业务MORE VALUEVALUE业务xIT ce来了:Power BI 自助BI(DAX) 怎么玩E0DAXSimple but not easy.课程板块Excel 120自助BI主

4、流程框架以不变,应万变。Power BI 自助商务智能分析主流程 理解业务:以 业务的形式描述,如:分析销售业绩。Excel 120 数据准备:把与该业务有数据加载进入Power BI数据模型。 数据建模:将数据表通过强依赖组织成数据模型。 定义指标:将业务细化为更小的可量化指标并定义计算逻辑。 DAX实现:将指标的计算逻辑用DAX三大构件以函数运算的形式组织并实现。 数据分析:联立不同的表列作为观察角度以及指标来对比以发现、规律、异常等。 业务分析:结合业务考虑数据分析的结果,给出分析报告或循环这个过程以优化。Power BI DAX 通用业务思维模式 忘记DAX,专注于当前关心的某些业务。

5、如:销售业绩。Excel 120 与该业务有数据表及属性有哪些,它们的是怎样的。如:,订单,地区,日期等。 在关心的业务下,定义可以量化的指标。如:销售额,利润,利润率等。 考虑相数据如何按照业务逻辑计算出上述业务指标。 转 Power BI DAX 通用建模思维模式。Power BI DAX 通用建模思维模式 DAX 数据模型 是 用串接在一起的表,这是自然的,它Excel 120们表示了业务的结构。 DAX 数据建模 就是根据业务将相表用最合理的串接起来。(并考虑为后续的计算做准备) DAX 数据计算 在数据模型中选定与某业务相列并从中过滤出有,然后这些行进行聚合计算。 DAX 数据分析

6、就是某业务,选择一个或几个观察角度来观察 DAX 数据计算 的结果。 转 Power BI DAX 的三种计算元素。Power BI DAX 的三种计算元素Excel 120课程板块Excel 120简介DAX - 数据分析表什么是 DAXDAX是一种编程语言,用于:Excel 1Power BI / Power Pivot / SSAS Tabular类似于Excel函数,如SUM诞生于Excel 2010 PowerPivot没有 Excel 中 行或列 的概念比Excel处理数据逻辑的函数专为数据模型及商业智能计算而生Simple but NOT easy用DAX就是:写函数DAX是一种

7、函数语言,因此执行逻辑Excel 1与函数调用直接相关:男性 VIP客户 销售额 =SUMX (FILTER ( 'tb客户', 'tb客户'= "男" ),IF ( 'tb客户'类型 = "VIP", 累计销售额 * 100, 累计销售额 * 90 )由于是函数形式,使用起来非常简单。课程板块Excel 120返回值的计算关注一个属性或一个指标的值用 DAX 计算后返回一个值ExcDAeX实l现 度1量值20DAX实现 计算列增加观察的角度:计算列 计算列:Calculated ColumnsExcel

8、12 使用DAX计算 总是计算当前行 例如:tb订单销售额的意思是: 【tb订单】表中【销售额】列的值 tb订单指定了表名(可选的)当前行(隐式的) 每行都不同计算复杂的业务指标:度量值 度量值:MeasuresExcel 12 使用DAX编写 并非按行运算 使用表及聚合运算 没有当前行的概念例如:累计销售额 = SUM( 'tb订单'销售额 )该用 计算列 还是 度量值 计算列 通常用作 观察的角度 使用Excel 120 度量值通常用于计算复杂的业务指标,如: 计算百分比,如:总利润率,流失率,同比增长率等 复杂的聚合运算,如:VIP客户中前20%的平均额 考虑性能与灵活性

9、 计算列占用内存,不占CPU 度量值占用CPU,不占内存 对于某业务指标感觉算得慢,优先考虑建立辅助的计算列 对于某整个文件感觉太大了,优先考虑使用度量值计算业务指标 总体上,优先选择度量值使用DAX应该有的好习惯度量值不属于任何一个表Excel 120使用时,不需要带表名使用 累计销售额 而不是 tb订单累计销售额存放时归位到一个表(不依赖性),可以是任意表约定:计算列的写法:tb订单销售额度量值的写法:累计销售额度量值应考虑放置于空表,如:指标表实现聚合类运算的常用函数 用于对值进行聚合运算,:Excel 120 SUM 计算总销售额 AVERAGE 计算平均单价 MIN 计算最小客单价

10、MAX 计算最大客单价 只能与数字类型的 表列 配合使用 只能与 一个表列 配合使用,例如: SUM( 订单销售额 ) 是合理的 SUM( 订单单价 * 订单数量 ) 是不合理的弥补聚合运算函数的不足:聚合类运算扩展 扩展后的聚合函数如下:Excel 120 SUMX / AVERAGEX / MINX / MAXX 等 迭代整个表并基于每行对给定表计算再聚合 使用两个参数: 参数1:表,按行迭代,如:订单 参数2:表,基于迭代到的当前行完成计算,如:订单金额 * 折扣 返回:对参数1的整个表迭代并在每行计算参数2表最后按 SUMX /AVERAGEX / MINX / MAXX 等进行聚合运

11、算,返回最终值SUMX 示例 对于订单的每一笔,从业务逻辑上:Excel 120 单笔利润率 = 利润 / 销售额 总利润率 = 所有订单的利润 / 所有订单的销售额。 DAX 实现方式1:总利润率 =SUM ( '订单'利润 ) / SUM ( '订单'销售额 )方式2:总利润率 =SUMX ( '订单', '订单'利润 ) / SUMX ( '订单', '订单'销售额 )对复杂的计算可以一步步来:VAR 对于简化计算非常有用,每个VAR可以完成一步Excel 120 最后用 RETURN 返回最

12、终的结果总利润率 =VAR x =SUMX ( '订单', '订单'利润 )VAR y =SUMX ( '订单', '订单'销售额 )RETURNDIVIDE ( x, y )日期函数 日期函数完成对日期的简单计算,如:某天是几Excel 120 DATE, DATEVALUE, DAY, EDATE EOMONTH, HOUR, MINUTE MONTH, NOW, SECOND, TIME TIMEVALUE, TODAY, WEEKDAY WEEKNUM, YEAR, YEARFRA 时间智能函数完成基于日期的分析逻辑计算:

13、 时间智能函数不是日期函数 计算 同比 环比 最近7日 等业务逻辑 单独课程板块Excel 120返回表的计算也许不是关注的结果,但却是得到结果的前提计算表计算表的位置Excel 12 返回表的函数 Power BI Desktop 新功能 Excel Power Pivot 中叫回表返回表的常用函数 与返回表有常用函数:Excel 120 FILTER ALL VALUES DISTINCT RELATEDTABLE 返回表作为结果并常用于继续作为其他函数的参数 可以混合使用以计算复杂的业务逻辑过滤:FILTER FILTERExcel 120 加入条件 限定更严格的过滤条件 返回表 可以用

14、作迭代器 X类函数 的首个参数 第一个参数是 表 可以嵌套使用取消已有的过滤:ALL ALL:取消筛选,该效果常常用于Excel 120 返回表的所有行 忽略筛选上下文 返回表 可与迭代器X类函数配合使用作为第一参数 需要表作为参数 可与单个列配合使用 FILTER - ALL 模式FILTER ALL 模式 取消对一个表的已有过滤并施加新的过滤Excel 120 表函数可混合使用 每个表函数需要表作为参数 每个表函数又返回一个表 FILTER( ALL( T ) , 条件 ) 对 T 整体忽略所处的筛选上下文 同时每一个行,使用条件进行过滤表列去重:DISTINCT 根据当前的筛选上下文,返

15、回列的非重复值Excel 120SKU数 =COUNTROWS ( DISTINCT ( ''ID ) )客户表 =( '订单表'客户ID )DISTINCT获得相关行:RELATEDTABLE 在与之连接的另一个表返回与当前行有所有行Excel 120与订单是一对多表增加计算列:相关订单数 =( '订单' )COUNTROWS(RELATEDTABLE)课程板块Excel 120计算上下文为 DAX 计算创造环境计算上下文(Evaluation Context)DAX任何计算都是在 特定环境 下进行的。筛选上下文形成符合业务的含义:2012年5

16、月由地区经理对于30到50岁山东男性客户利润率合计负责的家具类筛选上下文(Filter Context) 来源:Exce 图形元素产生:行选,列选,报告筛选,切片器。 规则: 未被筛选到的行不参与计算。 规律: 视觉元素产生的筛选都可由等效的函数来实现。l行上下文(Row Context) 来源:Exce 计算列引擎自动隐式创建完成。 迭代器函数 SUMX,AVERAGEX 所有的迭代器X类函数 其他可以产生行上下文的函数 取出列值参与计算,反映了“当前行”的概念。计算逻辑:从逻辑上,行上下文犹如轮询整个列的每行,并在行中按DAX表计算结果。在行上下文中使用 TableColumn 可以获取当

17、前行的值。两种上下文共同作用 筛选上下文 行上下文Excel 120 形式上着度量值 形式上着计算列 影响到表级别 影响到行级别 筛选上下文可能是空 行上下文也可能是空 决定哪些表行可见(未被筛选掉) 获取当前行的某列值 完全未被筛选的是很少的 可能和筛选上下文交错影响计算任何计算都是在两种上下文的同时作用下进行的!DAX 可以设置筛选 可以在DAX中设置筛选以覆盖外部报告的筛选。Excel 120订单销售额合计 家具类 =CALCULATE ( 订单销售额合计, ''类别 = "家具" )DAX 可以取消筛选 可以在DAX中设置取消筛选以忽略外部报告的筛选

18、。Excel 120订单销售额合计 忽略类别筛选 =CALCULATE ( 订单销售额合计, ALL ( ''类别 ) )课程板块Excel 120CALCULATE实现自定义计算用 CALCULATE 修改外部筛选状况再计算 使用 CALCULATE 的:Excel 120 修改筛选上下文 自定义筛选条件 CALCULATE 运行在筛选上下文中CALCULATE 语法 CALCULATE分为第一参数,和后续参数,除了第一参数,后Excel 120续参数全部为筛选器参数。 形如: CALCULATE( 返回值的DAX表, 筛选器1, , 筛选器n ) 度量值内部会自动定义CAL

19、CULATE并将计算都至于其中 用 度量值( 筛选器 ) 理解自定义计算的意义CALCULATE 执行过程说明1. 它采用当前筛选上下文,并后得到一个新的筛选上下文。Excel 1202. 从第二个参数开始,在 1 中筛选上下文对每个参数进行计算。3. 如果 2 中对于某列有多个筛选,则取这些筛选的交集。4. 如果 3 中的整体结果与 1 中筛选上下文有不一致,以 3 为准。5. 在 4 中筛选上下文继续计算 CALCULATE 的第一个参数。6.注意:如果CALCULATE位于行上下文中,在 1 与 2 之间还存在上下文转换, 将行上下文转为筛选上下文。CALCULATE 计算原理 基于当前

20、计算上下文 EC( Evaluation Context ) 计算 CALCULATE:Excel 1其中,筛选上下文,记为 FC( Filter Context )其中,行上下文,记为 RC( Row Context ) 计算CALCULATE( 参数1 ,参数2,参数N )FC 生成同样的FC,记为FC0将RC转为等效的筛选上下文,记为FC1在 FC中 分别计算 参数2,参数N,记为FC2,FCN计算FCNEW =【1】FC1 覆盖 FC0 ,即相同列筛选以 FC1 为准【2】计算 FC2 FCN,即第二个参数到第N个参数的交集效果【2】覆盖【1】,即相同列筛选以【2】为准在FCNEW筛选

21、上下文中计算第一个参数 CALCULATE 返回计算结果 注意:调用 CALCULATE 的位置的计算上下文调用前后是没有变化的2小提示0不要指望在第一次就能完全理解 CALCULATE 的计算过程,更好的是直接去用。当发现预期和实际不同时,再多次回来温习 CALCULATE 的用法说明。相信每次的体会。CALCULATE 计算原理图释计算参数1 FC2 FCN FC2FCN行下文RC转换FC生成筛选上下文FC0源筛选上下文FC筛选上下文FC行上下文RC度量值 = CALCULATE ( 参数1 , 参数2 , , 参数N ) 注:在计算参数2到N,分别产生筛选上下文FC2到FCNCALCUL

22、ATE 示例CALCULATE ( 订单销售额合计, ''类别 = "家具" )Excel 120CALCULATE ( 订单销售额合计, FILTER ( ALL ( ''类别 ), ''类别 = "家具" ) )CALCULATE ( 订单销售额合计, FILTER ( ALL ( ''子类别 ), 订单利润率合计 > 0.2)CALCULATE ( 订单销售额合计, ''类别 = "家具", ALL ( '地区 ) , VALUES (

23、 客户')CALCULATE (订单销售额合计,'类别 = "家具",'USERELATIONSHIP ( '日期'日期, '订单'发布日期 )CALCULATE ( 订单销售额合计, TREATAS ( VALUES ( '日期'日期 ), '订单'发布日期 ) )CALCULATE 中的上下文转换 CALCULATE在计算前会进行计算上下文转换Excel 120 如果CALCULATE处于行上下文中 CALCULATE会获取到当前行上下文 转换为等价的筛选上下文 并作用于数据模型 然

24、后再进行CALCULATE的计算 该特性非常强大也非常重要 在实践中体验的感受课程板块Excel 120计算上下文与多表模型的计算筛选与 筛选上下文中是否Excel 行上下文 筛选上下文 处于的一端 处于的多端RELATED:从多端按从一端取值 RELATED( tablecolumn )Excel 120 可导航到目标表列,并继续以行上下文形式。 沿着从多端找到一端的值RELATEDTABLE:从一端按从多端取行集合 RELATEDTABLE(table)Excel 120 用当前行筛选作为参数的表 返回与当前行相关联的行 与RELATED函数类似多表参与的筛选上下文 筛选上下文与的共同作用Excel 120影响筛选上下文 例如:及订单 沿着传递 可以多级传递 与行上下文不同筛选的传递E0课程板块Excel 120时间智能基于日期的灵活计算日期表 预置一个日期表Excel 120 使用DAX 或使用Excel 日期表必须满足所有连续日期 不得重复 中间无空隙 如果包含某年,必须包含该年1月1日到12月31日所有日期用 CALENDAR / CALENDARAUTO 生成日期表生成指定的日期表:Excel 120CALENDAR(DATE(2015,1,1),DATE(2016

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论