Power BI教程:制作动态斜率图进行年同比变化百分比对比
2024/12/4 3:04:29
本文主要是介绍Power BI教程:制作动态斜率图进行年同比变化百分比对比,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
静态与动态的斜率图
什么是坡度图呢?斜图是一种线形图,用来显示两个时间点或两种状态之间的变化。通过专注于每个类别的两个点,它简化了绝对和相对变化的对比。 斜图在类别数量较少时最为有效。
静态斜率图创建 Power BI 中的坡度图的一个简单方法是从 x 轴上排除不需要的数据点。例如,要比较 2021 年和 2024 年的收入,可以排除 2022 年和 2023 年。但使用年份切片器时,这种方法就会遇到问题,因为这个图表不会根据所选年份动态调整。
静态坡度图
动态斜率图(动态图)为解决这个问题并创建一个根据切片器的选择变化的动态坡度图,我们可以使用下面的DAX公式:
Sales_Slope 图 = VAR 第一年 = MINX(ALLSELECTED(日期维度), 日期维度[年份]) -- 最早的一年 VAR 最后一年 = MAXX(ALLSELECTED(日期维度), 日期维度[年份]) -- 最晚的一年 RETURN IF( SELECTEDVALUE(日期维度[年份]) = 第一年 || SELECTEDVALUE(日期维度[年份]) = 最后一年, SUM(糖果销售金额[销售额]), BLANK() -- 确保中间年份返回空白值 )
以下DAX公式旨在创建一个斜率图,用于比较选定的第一年和最后一年的总销售额。斜率图是一种用来比较两个时间点之间变化的图表。以下是对公式的分解说明。
1., 确定起止年份:
FirstYear
和LastYear
变量使用MINX
和MAXX
函数来确定筛选范围内的年内最小和最大年份。这确保公式能根据用户在切片器或筛选器中的选择进行调整。
2. 条件计算:
IF
语句检查当前年份是否是第一年或最后一年的话。- 如果是第一年或最后一年的话,则计算
SUM(Candy_Sales[Sales])
以得到该年的总销售额。 - 如果不是第一年或最后一年,则返回
BLANK()
,从而将这些年份从可视化中排除。
创建了 DAX 计量后,创建一个折线图。将 x 轴设置为 DimDate[Year]
(格式化为分类),将 y 轴设置为 Sales_Slope Graph
计量。这将显示第一年和最后一年的值,突出显示随时间的变化趋势。
添加百分比比较在斜率图中的重要性
虽然很容易通过观察斜率的陡峭程度来识别数值变化最大的情况,但这并不一定意味着百分比变化也是最大的。为了进行更准确的百分比变化比较,我们可以在每个类别的斜率图上添加百分比变化的标签。这将让我们看到数值的相对变化,而不仅仅是绝对值的变化。
Revenue_YoY_Change_Graph = VAR FirstYear = CALCULATE( MIN(DimDate[Year]), ALLSELECTED(Candy_Sales) ) VAR LastYear = CALCULATE( MAX(DimDate[Year]), ALLSELECTED(Candy_Sales) ) VAR LastYearValue = CALCULATE( SUM(Candy_Sales[Sales]), DimDate[Year] = LastYear ) VAR FirstYearValue = CALCULATE( SUM(Candy_Sales[Sales]), DimDate[Year] = FirstYear ) VAR YoYChange = IF( FirstYearValue > 0, DIVIDE(LastYearValue - FirstYearValue, FirstYearValue, 0), 0 ) 返回 IF( 选定值(DimDate[Year]) = FirstYear, 空值(), IF( YoYChange > 0, "▲ " & FORMAT(YoYChange, "0.0%"), IF( YoYChange < 0, "▼ " & FORMAT(YoYChange, "0.0%"), 空值() ) ) )
//此代码用于计算年对年销售额的变化,并用符号“▲”表示增长,“▼”表示下降。
此 DAX 公式的首要目标是计算每年同比(YoY)收入的变化,并以视觉上吸引人的方式展示结果,用上下箭头指示变化的方向。
一步一步来:
1. 确定起止年份:
或
1. 找出开始和结束的年份:
FirstYear
和LastYear
变量利用CALCULATE
和ALLSELECTED
函数来确定当前筛选范围内的年份最小值和最大值。这确保计算基于所选时间段。
2. 计算第一年和最后一年的收入
LastYearValue
和FirstYearValue
分别表示去年和第一年的总收入。
3. 计算同比变化的方法如下:
- 这个
YoYChange
变量计算从第一个年份到最后一个年份的百分比变化。它通过使用DIVIDE
函数,并设置默认值为 0 来处理可能出现的除零错误。
4. 格式化输出部分:
返回语句RETURN
根据年同比增长情况有条件地格式化输出:
- 若当前年份为首年,则返回空值(注:为了确保百分比变化仅在最后一年显示,首年的数据点从趋势图中被省略)。
- 若年同比增长率为正,则显示上箭头以及格式化的百分比数值。
- 若年同比增长率为负,则显示下箭头以及格式化的百分比数值。
- 若无变化,则返回空值。
为了进一步增强可视化,我们可以对百分比比较标签使用条件格式。增长可以用绿色表示,而负的变化则用红色表示。
CF_Revenue_YoY Change = VAR FirstYear = CALCULATE( MIN(DimDate[Year]), ALLSELECTED(Candy_Sales) ) VAR LastYear = CALCULATE( MAX(DimDate[Year]), ALLSELECTED(Candy_Sales) ) VAR LastYearValue = CALCULATE( SUM(Candy_Sales[Sales]), DimDate[Year] = LastYear ) VAR FirstYearValue = CALCULATE( SUM(Candy_Sales[Sales]), DimDate[Year] = FirstYear ) VAR YoYChange = IF( FirstYearValue > 0, DIVIDE(LastYearValue - FirstYearValue, FirstYearValue, 0), 0 ) RETURN IF( YoYChange > 0, "#6A994E", -- 正增长绿色 IF( YoYChange < 0, "#BC4749", -- 负增长红色 BLANK() -- YoYChange 为 0 或未定义时不显示颜色 ) )
通过实施这两项措施,我们会得到以下结果。
具有同比功能的动态斜率图
为什么需要新的日期表?日期表
在这个案例研究中,我们有一个关于糖果销售的表格,其中包含一个 Order_Date
列。你可能会想,既然我们的数据中已经有了日期信息,为什么还需要一个单独的 日期表。这里就是原因所在。
1. 时间智能
如果你想做这样的计算,比如:
- 年同比增长(比如,今年的销售额和去年相比)
- 月度变化(比如,每月销售额的变化情况)
- 累计总销售额(比如,从一月到现在为止的总销售额)
Power BI 自带的工具需要一个正确的时间表来处理这类基于时间的分析。没有它,这些计算将无法正常工作,或者需要花费大量额外的时间和精力。
2. 处理缺失或不规范的日期
在你的糖果销售表格中,订单日期
列可能:
- 包含空档(例如,在没有下单的日子里缺少日期)。
- 存在重复(例如,同一天有多个订单)。
- 缺少完整的日期范围,无法进行适当的分组和筛选。
日期表通过包含所有日期的连续日期来解决这个问题,即使某些日期没有订单。这确保了您的报告展示了完整的日期范围,而不仅仅是你销售数据里的日期。
要创建一个新的日期表(也称作日期维度或日历表),可以参考这篇文章:
在Power BI中,这篇文章构建并利用DimDate日期表进行KPI衡量和图表清理。这篇文章讨论如何在Power BI中构建并利用DimDate日期表进行KPI衡量和图表清理。在这里下载 .pbix 文件。这里。
谢谢大家的阅读!
我希望这个案例分析能提供一些有价值的洞察。如果有问题,欢迎联系。
如果你对更多数据故事和可视化内容感兴趣,欢迎关注。我不断分享相关内容在我的Patreon页面和LinkedIn页面。
[Microsoft Power BI 大师课 | Twitter, Instagram | 链接树别忘了订阅哦
👉 Power BI 发布动态
👉 Power BI 通讯报
以及加入我们的 Power BI 社区
一起来分享我们在 Microsoft Power BI 上的经验,一起学习,一起成长。
](https://linktr.ee/powerbi.masterclass?source=post_page-----2f7e0b4f8807--------------------------------)
这篇关于Power BI教程:制作动态斜率图进行年同比变化百分比对比的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-04Python基础入门
- 2024-12-03Python 编程入门教程
- 2024-11-30Python中''') 是什么?-icode9专业技术文章分享
- 2024-11-26Python基础编程
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用