https://zhuanlan.zhihu.com/p/64418286 假设有一组数据, 已知每一个产品贡献的利润,如果要计算前几名产品的贡献利润总和,或者每一个产品和利润更高产品的累计贡献占总体的比例,就涉及到累计求和,数据量较小的情况下,在 Excel 中可以轻松实现,毕竟 Excel 是对单元格进行操作. 但是在 PowerBI 中,对整个字段运算很简单,而对每一行的数据进行筛选汇总,却需要动一点小心思,下面就以此表为例介绍几种常用的累计求和方式,并以此案例来进一步掌握几个函数的用法.…
https://zhuanlan.zhihu.com/p/88528732 在各种经营分析报告中,我们常常会看到YTD,YOY这样的统计指标,这样的数据计算并不难,尤其是在PowerBI中,因为有时间智能函数的帮助,大大简化了这些计算,从而快速满足定期的报告需求. 下面就给你列出这些常用统计数据的度量值,帮你快速掌握各种期间数据的算法. 如果对时间智能函数不熟悉,可以先看看这篇文章: 一文帮你掌握时间智能函数 假设数据模型为一张订单表和一张对应的日期表,并已经建立了基础度量值: 收入 = SUM…
https://zhuanlan.zhihu.com/p/75462046 对于初学者,总是会把度量值和计算列搞混,我也经常碰到这样的问题,有些星友用文章中的代码总是报错,发给我一看,才知道TA把本来是度量值的DAX用在了计算列上,或者相反. 即使是已经学习了很长时间的人,对于计算列和度量值的写法也未必轻车熟路,还是有可能不明白其中到底有什么不同,这篇文章就试图把度量值和计算列彻底讲清楚. 什么是计算列.什么是度量值 计算列是直接在现有的表上添加一个新列, 新建的计算列,和表中之前已经存在的列一…
https://zhuanlan.zhihu.com/p/67803111 本文源于微博上一位朋友的问题,在计算同比增长率时,以下两种DAX代码有什么不同? -------------------- YOY% 1 = VAR sales=SUM('订单'[销售额]) VAR lysales= CALCULATE( SUM('订单'[销售额]), SAMEPERIODLASTYEAR('日期表'[日期])) RETURN DIVIDE(sales-lysales,lysales) --------…
https://zhuanlan.zhihu.com/p/64414205 前面介绍如何使用DAX生成日期表的时候,使用了VAR,有人留言问这个VAR怎么理解,那么这篇文章就来介绍VAR以及它的用法. VAR是VARIABLE的缩写,意思为变量,任何一个编程语言中,变量都是一个非常重要的基础概念,DAX当然也是一种语言,也有变量这个概念.如果以前学过编程,对这个应该很熟悉:没学过也没有关系,看了本文你就理解了. 我们人都有记忆能力,电脑也有记忆能力,并且比人的记忆能力更强大更稳定,那么如何利用电…
https://zhuanlan.zhihu.com/p/64999937 经常碰到本年至今.本月至今的数据计算,其实还有一类计算是,从历史最早日期至今的累计计算,比如从开业到现在总共卖出了多少件商品,累计实现了多少销售额等. 本年累计称为YTD,历史至今的累计是不是可以称为HTD呢:) :这样的时间段很可能是跨年的,所以时间智能函数并不适用,不过不用时间智能函数依然可以很简单的进行计算. 模拟数据如下: 只是计算一个整体累计销售额很简单,我们想要计算的是从最初到任意一个日期的累计销售额,为了能…
https://zhuanlan.zhihu.com/p/57861350 计算个体占总体的比例是一个很常见的分析方式,它很简单,就是两个数字相除,但是当需要计算的维度.总体的范围发生动态变化时,如何灵活且快速的计算出各种占比,还是需要动一点心思的. 本文就通过 DAX 中的 ALL 和 ALLSELECTED 函数来看看在 PowerBI 中是如何快速计算出各种占比的. 数据为虚拟的某网上商城的电子产品的销售记录,我们根据销售额指标来计算某产品的占总体或者类别的比例. 首先写一个销售额的度量值…
https://zhuanlan.zhihu.com/p/121773967 ​数据分析就是筛选.分组.聚合的过程,关于筛选,可以按一个维度来筛选,也可以按多个维度筛选,还有种常见的方式是,利用几个特定的维度值构成的表,作为条件表来筛选原始表. 也就是说,根据一个表,来筛选另外一个表,在PowerBI中怎么做,更具体一点,如何用DAX来完成呢? 假设原始数据记录为一张模拟的订单表: 还有一张表,命名为筛选条件表, 根据这个筛选表,来找出订单表中的记录,即找出1月2日产品A和B.以及1月3日产品B…
https://zhuanlan.zhihu.com/p/55841964 时间可以说是数据分析中最常用的独立变量,工作中也常常会遇到对时间数据的对比分析.假设要计算上年同期的销量,在PowerBI中可以用CALCULATE来写个度量值[上年同期], = CALCULATE([数量],SAMEPERIODLASTYEAR('日期表'[日期])) 这里SAMEPERIODLASTYEAR就是时间智能函数. 时间智能函数和普通函数的区别 时间智能函数与普通的时间或者日期函数的区别是, 日期函数直接依…
https://zhuanlan.zhihu.com/p/98975646 如何将表格或者矩阵中值的条件格式也应用于总计行? 目前PowerBI并不支持这种功能,无法在总计行或者小计行上应用条件格式,不过我们可以摸索个变通的方式来实现. 以制作红绿灯效果这篇文章的数据为例: PowerBI小技巧:简单两步实现红绿灯.箭头效果 这个总计行显然没有应用条件格式,本文尝试让总计行也同样适用于条件格式:动态的显示红绿灯的效果. 解决思路 PowerBI默认的总计行无法使用条件格式,这是暂时无法改变的,那…
https://zhuanlan.zhihu.com/p/64421378 Excel中知名度最高的函数当属VLOOKUP,它的确很有用,可以在两个表之间进行匹配数据,使工作效率大大提升,虽然它也有很多局限性.这里不讨论VLOOKUP,而是学习一个和VLOOKUP功能很相似的DAX函数:RELATED. RELATED RELATED是一个值函数,它的参数是一列,RELATED函数也是把一个表的数据通过匹配到另一个表中,前提是使用前应该在两个表之间建立关系. 表之间的关系图如下, 订单表的数据如…
https://zhuanlan.zhihu.com/p/85996745 上一篇文讲了累计聚合,这篇文章继续讲一下滚动聚合,比如常用的MAT计算,Moving Annual Total,滚动年度总计,即向前滚动12月的合计数. 滚动年度求和,也经常用于财务上的滚动预算,看完这篇文章,你以后会很轻松的计算出需要的数据了. 模拟一份2018年1月至2019年7月的订单数据, 利用CALENDARAUTO生成一份日期表,按日期列建立关系,那么如何计算向前滚动12月的销售额合计呢? 其实很简单,新建度…
https://zhuanlan.zhihu.com/p/68384001 本文聊聊在PowerBI中如何进行各种类型的排名问题. PowerBI中计算排名主要使用RANKX函数,关于该函数的具体语法,不再细说,可以查看该函数的官方文档,也可以参照这个函数卡片: ↑ 知识星球每日函数卡片 下面通过几个示例来看看它的用法. 假设数据模型为一个订单表,以及对应的产品维度表和客户维度表,产品维度表有产品名称和产品类别. 下面分别按销售额对各种维度进行排名. 销售额 = sum('订单'[销售额]) 对…
https://zhuanlan.zhihu.com/p/70590683 关于占比,之前有篇文章(利用ALL和ALLSELECTED灵活计算占比)详细介绍了各种情况下占比的度量值. 经星友咨询,还有一种情况没有介绍,实际工作中会经常用到的情形是:父级字段显示该层级值占总体的比例,而打开该层级,显示子级各明细项占该层级值的占比. 仍然用占比文章中的示例,直接来看一下效果. 当处于产品类别层级,显示类别占在总体的比例, 而打开类别,产品明细显示占该类别的比例, 其实单独计算产品明细占类别的比例,以…
https://zhuanlan.zhihu.com/p/64400583 前面利用PowerBI做数据分析的时候都是对整列的字段进行操作,并没有做更细化的分析,比如分析数据的每一行.提取某一行的数据,这在Excel中很容易实现,因为Excel公式是对单元格操作.那么在PowerBI中能不能按行分析呢,答案当然是肯定的,并且比Excel更加灵活,借助这个函数:EARLIER . EARLIER语法 EARLIER(<column>, <number>) 第一个参数是列名 第二个参数…
https://zhuanlan.zhihu.com/p/68183990 我在知识星球收到的问题中,关于表格和矩阵(以下统称表格)总计行错误算是常见的问题之一了,不少初学者甚为不解,在Excel透视表中很常见的总计,为什么到了更强大的 PowerBI 中,反而会出现这么低级的错误呢? 并且碰到这个错误,很多人都束手无策,不知道该怎么办,或者干脆设置为不显示总计行了,其实没有必要,本文就来介绍一下为什么会出现错误,以及解决的办法. 总计的计算逻辑 在PowerBI的表格中,每一个数据都是根据当前…
https://zhuanlan.zhihu.com/p/67015995 编写DAX代码进行业务分析时,经常会用到表与表之间的连接计算,比如在之前的产品关联分析一文中(如何用Power BI分析产品关联度?),需要找出同时购买两种商品的客户,就是计算A商品的客户列表与B商品的客户列表的交集. 这篇文章再通过客户列表的示例,介绍如何使用DAX,进行两个表的各种连接计算. 模拟一个简单的订单表如下, 通过订单表可以简单的计算出购买A的客户列表,新建表,在编辑框输入代码,如图示: 购买A的客户也可用…
​https://zhuanlan.zhihu.com/p/74732578 来源于知识星球中一个星友的问题,使用DAX在PowerBI中新建了一个表,如何为这个表添加索引列呢? 假如数据模型中只有一张订单表,需要从订单表中提取客户表,可以直接使用VALUES函数提取一个不重复客户表, 如何为这个表添加索引列? 因为DAX生成的表无法在PowerQuery中编辑,也就无法使用PQ的添加索引列的功能了,这里提供两个变通解决的方法. 方法一:使用ADDCOLUMNS在原DAX的基础上增加排名列 因为…
https://zhuanlan.zhihu.com/p/64421003 学习 DAX 的过程中,会遇到各种坑,刚开始甚至无法写出一个正确的度量值,总是提示错误.其实很多原因都是不理解 DAX 函数及其参数规范造成的,在该用表的时候没有用表,该用列的时候没有用列. 常见的 DAX 函数返回一个值,比如 SUM.MAX 等,称为值函数,这些和 Excel 公式有很多相似之处,很容易理解:难以理解的是和Excel公式不同的地方:DAX 中还有很多表函数. 表函数就是返回的是一张表,如果我们用这种函…
https://zhuanlan.zhihu.com/p/64420449 在进行数据分析时,需要对某个数据进行格式调整的情形经常会遇到,在DAX中有一个专门进行格式调整的函数:FORMAT. 其实对于 FORMAT 函数并不陌生,在之前介绍如何制作日期表时,其中一种方式就是利用 DAX 生成日期表, 这一串 DAX 函数可以一键生成一套日期表,仔细观察,其实只是第一行代码利用 CALENDAR 生成一个日期列,剩余的年.月份.日.星期等都是利用 FORMAT 函数对日期进行自定义格式调整生成的…
https://zhuanlan.zhihu.com/p/67441847 累计求和问题,之前已经介绍过(有了这几个公式,你也可以快速搞定累计求和),主要是基于比较简单的情形,针对所有的数据进行累计求和. 现实中的需求并不总是这么简单,稍微复杂一点的是按类别求累计,以帕累托分析为例,模拟数据如下, 这次不是按全部产品进行累计求和,而是在每一个产品类别内部进行累计求和,进而计算出类别内的累计占比. 根据之前学过的知识,其实也可以计算出来,这里直接给出另一种更简洁且性能更优的方式,新建列, 累计销售…
概要 本章,我们学习“常用的实现多线程的2种方式”:Thread 和 Runnable.之所以说是常用的,是因为通过还可以通过java.util.concurrent包中的线程池来实现多线程.关于线程池的内容,我们以后会详细介绍:现在,先对的Thread和Runnable进行了解.本章内容包括:Thread和Runnable的简介Thread和Runnable的异同点Thread和Runnable的多线程的示例 转载请注明出处:http://www.cnblogs.com/skywang1234…
https://zhuanlan.zhihu.com/p/64422393 经常有朋友提出一个问题,然后我给出一个DAX之后,TA又不是很理解,反复多次沟通才能把一个表达式讲清楚.或者TA自己写了一个度量值,可是对输出结果无法理解:我想要的是A,为什么出来的是B? 为了帮助大家快速理解一个相对复杂的DAX,我把平时使用的方法拿出来分享如下. 为了介绍的简洁清晰,以及大部分人的可理解性,本文的DAX并不算复杂,重要的是理解的步骤和思路.(我理解的复杂DAX就是看起来比较长的.经过多层函数嵌套的.计…
https://zhuanlan.zhihu.com/p/107672198 ​本文来自星友袁佳林的实践分享,他参加了PowerBI星球中的DAX圣经第二版100天学习打卡活动,已持续分享近100天,对DAX的理解自然更深了一些,本文就是他利用DAX解决问题的一种思路. Think in DAX 之报表自动化实践 作者:袁佳林 2019年6月7日,在我加入PowerBI星球不久,问过星主采悟一个实际工作上遇到过的数据汇总统计的问题: 数据结构如下图所示, (数据纯属模拟,如有雷同,都是抄我的)…
https://zhuanlan.zhihu.com/p/66424209 SUMMARIZE函数非常强大,掌握以后表面上看也非常好用,所以我专门写篇文章介绍一下这个函数,至于是否一定要使用该函数,请看完再决定. SUMMARIZE,单纯从英文语义上看,是汇总.总结的意思,而它的功能,确实也就是汇总,它可以返回一个汇总表. 你可以从官方的文档中查询到该函数的说明, https://docs.microsoft.com/en-us/dax/summarize-function-dax 它的参数非常…
https://zhuanlan.zhihu.com/p/64422599 为什么要进行格式化? DAX 是一种函数式语言,正如我们已经学习的或者看到的,DAX 代码中总有一些函数带有几个参数,而参数还可以是其他函数所构成,参数的数量以及嵌套的层数决定了 DAX 代码的复杂度. 使用 PowerBI 进行数据分析时,有三层嵌套的 DAX 代码很常见,四层及以上的嵌套也经常需要用到,如果将所有的代码写在一行上,不做任何格式化的处理,将导致难以理解,即使是自己写的,回头再看或者修改也会一头雾水. 因…
https://zhuanlan.zhihu.com/p/79522456 对于PowerBI使用者而言,经常碰到的一个问题是,想把度量值放到坐标轴上,却发现无法实现.尤其是初学者,更是习惯性的想这么做. PowerBI星球嘉宾天行,摸索出了一个解决该问题的思路,请慢慢品读吧. 解决度量值不能作为坐标轴字段的问题 作者:天行 初入Power BI的门,很快就会被度量值和计算列的动态性吸引,进而义无反顾地跳进DAX的火坑中,然后……(省略号的内容留给曾经在坑中和正在坑中徘徊的各位自行填写吧 ) 如…
https://zhuanlan.zhihu.com/p/109964336 ​今年是闰年,有星友问我,在Power BI中,2月29日的上年同期是怎么计算的? 这是个好问题,正好梳理一下,PowerBI时间智能函数是如何处理不规则日期的对比数据的. 以一个模拟的订单表数据为例,订单日期涵盖了2015年.2016年和2017年,其中2016年是闰年,添加一个相匹配的日期表与之建立关系, 先建立一个基础度量值: 收入 = SUM('订单表'[销售额]) 然后通过下面几个示例,来看看几个和2月29日…
https://zhuanlan.zhihu.com/p/96823622 ​开始半累加的计算之前,我们先看看什么是累加.半累加以及不可累加数据. 在含有大量行的数据表中,各种数据处理语言,包括DAX,为了性能考虑,不太可能总是检索表的每一行,更常见的情形是,一次性检索成千上万行,处理如此多行数据的最有效操作就是将它们加到一起,也就是累加汇总. 可以累加的数据类型就是可累加数据,比如订单表中的销售额,就是这种类型,无论是按照客户维度还是按照时间维度,都可以将每行的销售额直接汇总,并且这种汇总的结…
本章,我们学习"常用的实现多线程的2种方式":Thread 和 Runnable.之所以说是常用的,是因为通过还可以通过java.util.concurrent包中的线程池来实现多线程.关于线程池的内容,我们以后会详细介绍:现在,先对的Thread和Runnable进行了解.本章内容包括:Thread和Runnable的简介Thread和Runnable的异同点Thread和Runnable的多线程的示例 转载请注明出处:http://www.cnblogs.com/skywang12…