DAX使用场景及常用函数
Power BI中DAX函数非常多,功能非常强大,下面结合一些实际场景来讲解DAX一些常用的函数,这些场景包含求和、计数、相除、排序、累计、环比、同比,为了更方便后续的可视化展示数据,我们新创建可视化展示的页面,创建一个新表存储后续展示的度量值,具体操作如下:
经过以上步骤的操作可以在"字段"区域看到对应的新建的"度量值表",后续在各个场景中使用时需要选中该"度量值表"后再新建"度量值"这样新创建的度量值会保存到该表中。
(相关资料图)
一、求和统计
需求:对"2022年点播订单表"统计营收总金额进行展示。
通过观察"2022年点播订单表"数据可以看到没笔订单都有对应的套餐价格以及优惠金额,每笔订单的营收即:套餐金额-优惠金额,所以统计营收总金额将每笔订单的套餐金额-优惠金额累加起来就可以。具体操作步骤如下:
1、在"度量值表"中新建度量值"总营收金额"
度量值DAX公式为:总营收金额 = SUM("2022年点播订单表"[套餐价格])-SUM("2022年点播订单表"[优惠金额])
注意在"度量值表"中我们也可以将后续不使用的"列1"列删除。
2、使用多行卡图进行展示结果
以上创建的度量值可以随着我们可视化指标的不同而变化,例如,统计不同套餐的营收金额,统计不同商圈的营收金额,都可以使用创建的该度量值。操作如下:
同样的方式我们也可以创建可视化表将"门店信息表"中的"商圈类型"与"总营收金额"展示在一起,如下:
并且还可以点击两表中不同的行进行联动,如下:
二、计数统计
在Power BI中用于计数的函数有两个:COUNT和COUNTA,两者都可以对某一列进行计数,用法上一样,区别为COUNTA可以对True或者False列分别统计True和False的数量,所以使用更加广泛。
COUNTA函数的使用方式如下:
COUNTA(ColumnName)
复制
以上"ColumnName"是我们传入到COUNTA函数中要进行计数的列。下面我们新建度量值"总订单量"使用COUNTA函数统计"2022年点播订单表"中总订单数量:
度量值DAX公式为:总订单量 = COUNTA("2022年点播订单表"[订单号])
将创建的"总订单量"度量值拖入到之前创建的"多行卡"中,操作如下:
除了以上计数的需求外,在数据分析时我们还需要进行去重统计,这就需要用到DISTINCTCOUNT函数,DISTINCTCOUNT函数的用法如下:
DISTINCTCOUNT(ColumnName)
复制
以上传入的"ColumnName"列就是需要统计不重复数的列。下面我们创建新的度量值"不重复机器数"来统计"2022年点播订单表"中不重复的机器数量,操作如下:
度量值DAX公式为:不重复机器数 = DISTINCTCOUNT("2022年点播订单表"[机器ID])
将创建的"不重复机器数"度量值拖入到之前创建的"多行卡"中,操作如下:
三、相除统计
在Power BI中有一些场景需要使用到数据相除,我们可以通过"/"符号实现或者使用"DIVIDE"函数实现。使用"/"符号时分母不能为0,使用DIVIDE分母可以为零,这时结果会返回空值,由于DIVIDE函数比较安全,在相除场景下我们经常使用DIVIDE函数。DIVIDE函数的用法如下:
DIVIDE(分子,分母,[分母为零或空时返回的值,默认为空值])
复制
下面通过DIVIDE函数来统计"2022年点播订单表"中成交订单均价(使用总营收金额/总订单数),这里也是通过创建"度量值"来实现,操作如下:
度量值DAX公式为:订单均价 = DIVIDE("度量值表"[总营收金额],"度量值表"[总订单量])
将创建的"订单均价"度量值拖入到之前创建的"多行卡"中,操作如下:
四、排序统计
在Power BI中要实现排序功能可以借助RANKX和ALL函数来实现。RANKX函数功能是排序,其用法如下:
RANKX(表,表达式)
复制
RANKX函数中"表"指的是需要排序的表单,也可以是通过DAX表达式生成的表单,一般我们可以搭配ALL来生成表单,"表达式"是指排序的依据。
ALL函数功能是返回表中所有行或列中的所有值并忽略已应用的任何筛选器,即去除筛选。其用法如下:
ALL([TableNameOrColumnName],[ColumnName]... ...)
复制
ALL第一个参数可以是表也可以是列,表示对表或者列去除筛选。
在使用RANKX函数时必须搭配ALL函数一起使用,表示去除筛选起到绝对排序的效果。下面通过RANKX函数和ALL函数结合创建"商圈营收排名"度量值来统计"2022年点播订单表"中商圈类型营收金额的排名。
首先创建"商圈营收排名"度量值,度量值DAX公式为:商圈营收排名 = RANKX(ALL("门店信息"[商圈类型]),"度量值表"[总营收金额] )
将创建的"商圈营收排名"度量值拖入到之前创建的"表"中,操作如下:
可以看到商圈类型中对应的排名结果。
五、占比统计
一些场景下我们需要统计占比,可以通过DIVIDE和CALCULATE函数来实现,DIVIDE函数前面有介绍,不再赘述。CALCULATE函数是DAX函数中最重要和常用的函数,主要功能是根据指定的条件对数据进行筛选然后按照指定的表达式进行计算,找出满足条件的数据,其用法如下:
CALCULATE(表达式,[筛选器1],[筛选器2]... ...)
复制
以上"表达式"参数是指对筛选后的数据进行计算的表达式,可以执行各种聚合计算,后续参数是一系列的筛选器,筛选器也可以为空,多个筛选器之间用逗号分割,多个筛选器都满足的数据集合才会被指定的表达式进行计算,并返回计算的结果。例如统计"2022年点播订单表"中单曲套餐订单数与总订单量的占比,可以通过以下步骤实现:
首先创建度量值"单曲占比量",度量值DAX公式为:单曲占比量 = DIVIDE(CALCULATE("度量值表"[总订单量],"2022年点播订单表"[套餐名称]="单曲"),"度量值表"[总订单量])
将创建的"单曲占比量"度量值拖入到之前创建的"多行卡"中,操作如下:
可以看到单曲点播的订单占了总订单的将近1半。
六、累计统计
在Power BI中针对时间维度进行累计值统计也是常见的场景,例如统计每月累计交易额、统计每个季度累计交易额等,这就要使用到累计相关的DAX函数,累计相关的DAX函数有三个:TOTALYTD、TOTALQTD、TOTALMTD。
TOTALYTD:计算从本年开始到当前的累计。TOTALQTD:计算从本季度开始到当前的累计。TOTALMTD:计算从本月开始到当前的累计。这几个函数的用法一致,只不过计算的时间维度不同。下面我们分别进行介绍。
需求:针对"2022年点播订单表"统计累计到当前的总营收金额。
以上需求我们可以使用TOTALYTD进行统计,TOTALYTD用法如下:
TOTALYTD(表达式,日期列,[筛选器],[截止日期])
复制
表达式参数代表统计的表达式,日期列参数指定日期时间列,筛选器参数可以过滤数据,截止日期参数指定的是统计截止日期,一般我们使用TOTALYTD时只需要传入前2个参数即可。
完成以上需求首先创建"年累计营收"度量值,并输入度量值DAX公式:年累计营收 = TOTALYTD("度量值表"[总营收金额],"动态日期表"[Date])
在"报表"视图中创建创建可视化"矩阵",在动态日期表中依次选择"季度"和"月份"设置为列,在度量值表中将刚刚创建的"年累计营收"设置为值,绘制可视化图如下:
按照以上同样的方式,创建"季累计营收"和"月累计营收"度量值,并输入对应的度量值DAX公式为: TOTALQTD("度量值表"[总营收金额],"动态日期表"[Date]) 和 TOTALMTD("度量值表"[总营收金额],"动态日期表"[Date]) ,并绘制"矩阵"图,如下:
七、同比与环比统计
在数据分析中我们也经常遇到同比和环比的分析场景,同比和环比是两个不同的概念,同比是指相邻时间段某个相同的时间点的比较,例如:2021与2022年是两个相邻的年份(相邻时间段),2021年5月与2022年5月是这两个相邻时间段的相同时间点都是5月,比较这两个时间段的数据是同比。
环比相对于同比简单,即:相邻的两个时间段的比较,例如:2022年5月和2022年6月数据比较这就是环比。
在资料中找到"2021~2022年工资表"导入到PowerBI中并修改对应的日期格式,如下图所示:
下面我们分别在PowerBI中针对"2021~2022年工资表"数据统计工资月同比增长率与工资月环比增长率。
统计月同比增长率在PowerBI中针对同比业务场景我们需要用到SAMEPERIODLASTYEAR函数,该函数作用是返回去年同期对应数据,通常用来与去年同期进行同比,其用法如下:
SAMEPERIODLASTYEAR(日期列)
复制
以上"日期列"参数需要传入日期的列。工资月同比增长率计算方式为:(本月工资-去年同期月份工资)/去年同期月份工资,可见统计月同比增长率除了要使用SAMEPERIODLASTYEAR函数外还需要用到CALCULATE和DIVIDE函数,按照以下步骤来统计工资月同比增长率:
在"度量值表"中创建新的度量值"当月工资"创建该度量值的主要目的是方便后续的使用,也可以不创建。度量值DAX公式为:当月工资 = SUM("2021~2022年工资表"[工资])
在"度量值表"中创建新的度量值"去年同期月份工资"度量值DAX公式为:去年同期月份工资 = CALCULATE("度量值表"[当月工资],SAMEPERIODLASTYEAR("2021~2022年工资表"[年月]))
在"度量值表"中创建新的度量值"工资同比增长率"度量值DAX公式为:工资同比增长率 = DIVIDE("度量值表"[当月工资]-"度量值表"[去年同期月份工资],"度量值表"[去年同期月份工资])
在"报表"视图中创建可视化"矩阵"展示"工资同比增长率"数据注意需要修改"2021~2022年工资表"中年月列的格式为非层次结构。在可视化表中我们可以看到对应的"去年同期月份工资"及"工资同比增长率"结果。
统计月环比增长率计算工资月环比增长率公式为:(本月工资-上月工资)/上月工资,如果想要根据本月工资获取到上月工资我们就需要用到DATEADD函数,DATEADD函数用法如下:
DATEADD(日期列,偏移量,偏移单位)
复制
以上"日期列"参数指的是包含日期的列;"偏移量"参数指定的是从日期列中需要添加或减去的时间间隔数;"偏移单位"参数指的是Day,Month,Quarter,Year按照哪个时间维度偏移。按照以下步骤来统计工资月环比增长率:
在"度量值表"中创建新的度量值"当月工资"这个在计算同比时已经创建可以省略。
在"度量值表"中创建新的度量值"上月工资"度量值DAX公式为:上月工资 = CALCULATE("度量值表"[当月工资],DATEADD("2021~2022年工资表"[年月],-1,MONTH))
在"度量值表"中创建新的度量值"工资环比增长率"度量值DAX公式为:工资环比增长率 = DIVIDE("度量值表"[当月工资]-"度量值表"[上月工资],"度量值表"[上月工资])
在"报表"视图中创建可视化"矩阵"展示"工资环比增长率"数据在可视化表中我们可以看到对应的"工资环比增长率"结果。
-
热头条丨大数据分析工具Power BI(七):DAX使用场景及常用函数PowerBI中DAX函数非常多,功能非常强大,下面结合一些实际场景来讲解DAX一些常用的函数,这些场景包含求和、计数、相除、排序、累计、环比、同
-
世界观焦点:保护濒危剧种 今年山西将购买4250场演出给百姓保护濒危剧种今年山西将购买4250场演出给百姓
-
观察:第二税务分局精细落实“12345”工作本文转自:南京晨报着力解决纳税人“急难愁盼”第二税务分局精细落实“12345”工作晨报讯(通讯员上官秋晨南京晨报 爱南京记者仲敏)“没...
-
金徽酒(603919):3月27日北向资金增持16.72万股3月27日北向资金增持16 72万股金徽酒。近5个交易日中,获北向资金减持的有4天,累计净减持37 26万股。近20个交易日中,获北向资金增持的有10天
-
你是我的小星星是什么歌_你是我的小星星1、作曲:an佳作词:an佳混音:an佳演唱:an佳。2、钟洁zjan佳:微笑告诉我的宝贝你是我的小星星就像在我的手里捧
-
一级保护动物有哪些鱼的名字_一级保护动物有哪些1、国家一级保护动物有大熊猫、金丝猴、长臂猿、丹顶鹤、朱鹮等。2、大熊猫属于食肉目、熊科、大熊猫亚科和大熊猫属唯一的哺乳
-
陕西省应急厅督查组对商洛开展工贸重点企业安全生产督导核查陕西省应急厅督查组对商洛开展工贸重点企业安全生产督导核查
-
雅克科技(002409.SZ):大基金拟减持不超1%股份格隆汇3月27日丨雅克科技(002409)(002409 SZ)公布,持股5 00%的股东国家集成电路产业投资基金股份有限公司拟自该减持计划公告之日起15个交易
-
失业保险金到哪个部门办理?办理条件及需要什么材料?-全球新要闻失业保险金到哪个部门办理?办理条件及需要什么材料?社保网小编整理如下:一、失业保险金到什么部门办理线下领取流程:1、单位解除合同关系后
-
天天实时:柯力传感: 柯力传感关于证券事务代表辞职的公告柯力传感:柯力传感关于证券事务代表辞职的公告
-
漫步者(002351)3月27日13点32分触及涨停板3月27日盘中消息13点32分漫步者002351触及涨停板目前价格1653上涨998其所属行业消费电子目前下跌领涨股为惠威科技该股为黑色家电家电智能音箱
-
看这里!长沙“盘活存量房”最新热点问题解答相关链接:长沙唯一住房供做长租房,可按“首套房”方式再买新房创新租购循环思路!2023年长沙计划盘活存量房1 5万套
-
工信部部长:我国基本构建了规模大、体系全、竞争力较强的产业体系3月27日,在以“经济复苏:机遇与合作”为主题的中国发展高层论坛2023年年会上,工信部部长金壮龙表示,经过多年的发展,我国基本构建了规模...
-
天天头条:齿痕严重是什么原因_齿痕1、你好,齿痕说明脾虚,建议你多喝粥。2、实物细嚼慢咽,不要吃辛辣,刺激的食物。3、也可以找中医调理,不要暴饮暴食,面色
-
今年山西要新建5G基站2.5万个 快资讯今年山西要新建5G基站2 5万个
-
金徽酒:高端产品占比提升至63.93% 全国化进程提速金徽酒(603919)3月23日晚间披露年报,2022年公司实现营业收入20 12亿元,同比增长12 49%;归母净利润2 80亿元,基本每股收益0 55元,经营活动
-
世界热消息:重庆港2023年力争实现营业收入53亿元 同比增长6.83%重庆港3月24日晚间公布的2022年报显示,去年公司实现营业收入49 61亿元,同比减少9 49%;归母净利润1 43亿元,同比大幅增长111 95%;扣非后净
-
丧世情人虐不虐_丧世情人1、丧尸式恋爱是虽然在恋爱,却过得像单身一样,这就是丧尸式恋爱最显著的特征。2、人家恋爱那是甜甜蜜蜜,到处撒狗粮,而你却
-
流鼻血快速止血_流鼻血的止血方法|全球看点1、流鼻血常用的止血方法有几种:1。2、如果是轻微鼻出血,可以采取坐位或半坐位,头微微前倾,用食指和拇指捏住两侧鼻翼,向
-
全球快播:胡鑫溢:3.26黄金下周行情走势分析及具体策略建议胡鑫溢:3 26黄金下周行情走势分析及具体策略建议碰到许许多多还在亏损中迷茫的投资者,没有一成不变的行情,也没有一成不变的投资者,需要不
-
流光溢彩的意思相近的词语_流光溢彩的意思|世界新动态1、流光溢彩的近义词有以下:2、光彩夺目:光彩:光泽和颜色。夺目:耀眼。形容光泽和颜色鲜艳耀眼。3、熠熠生辉:亮晶晶地发
-
记者:黄政宇今天可能前往泰山队报到 是否加盟还需考察|当前消息记者:黄政宇今天可能前往泰山队报到是否加盟还需考察,鲁能,陈永,黄政宇,广州城,泰山队,足球竞赛,足球运动员,中国体育联赛,中国职业运动联盟
-
上海游玩_上海游1、如果你选择去上海,那就像我们在江苏一样离上海很近。其实不管距离远近,都可以选择坐高铁或者动车。毕竟现在中国铁路这么发
-
我也很想他歌词-每日快讯1、完整歌词:那时我们总有好多话什么事都可以讲我的爱情比你早却一直放在心上后来你们之间的变化我不想再多说话经过了相遇(和)挣扎我还是无法
-
内伶仃福田国家级自然保护区入选首批广东省自然资源·林业法治宣传教育基地名单近日,广东省自然资源厅、广东省林业局、广州市林业和园林局联合举办以“厚植宪法根基·共建绿美广东”为主题的法治宣传活动,现
-
以赛代练找状态,中国花滑名将金博洋世锦赛排名第22位2023世界花样滑冰锦标赛3月25日结束男子单人滑争夺。尚未恢复最佳状态的中国名将金博洋,在自由滑比赛中两次摔倒,仅得到129 18分,最终以总分
-
全球观点:1cr17ni2是什么材料_1cr171、1Cr17Ni4马氏体型不锈钢。2、通过热处理可以调整其力学性能的不锈钢,通俗地说,是一类可硬化的不锈钢。3、典型牌
-
重庆市成人高等教育毕业证查询_成人高等教育毕业证查询1、你看一下毕业证上有没有网址可以查的?一般都会有 如果没有的话,可以上省成人教育网,有结业证编号就可以查的 。本文就为
-
【天天新要闻】雅诗兰黛小棕瓶作用1、雅诗兰黛小棕瓶系列(ANR系列)主打的就是修护功能。修护肌肤细胞受到的伤害,激活自身细胞清除碎片和损伤的功能。2、雅诗兰黛小棕瓶使用后
-
张帅因身体不适赛前退赛 34岁的她真的打不动了?张帅赛前退出迈阿密站。“很抱歉一直在我身后支持我的人,由于我的身体状态不是100%,我不得不退出迈阿密公开赛……”在25日清晨迈阿密站(...