使用Power BI计算随时间变化的百分比
问题
多年来,许多专家演示了如何计算Power BI中的时间智能,包括按年,按月,按周等。所有这些都可以归类为所谓的“按周期排序”,这是一种用于业务分析的技术,用于衡量当前日期格式与历史上相同日期格式相比的值。根据要分析的数据集或业务需求,最终目标始终是以在两个比较期间中经过相同时间的方式查看历史数据。
解
出于本技巧的目的,用于此工作的数据源是Power BI数据集,其中包含一个有关“租户产品使用情况和活动”的表。没有日历维度表,因此我们需要稍后创建。
对于此演示,我们将计算每个Microsoft Office 365应用程序(OneDrive,SharePoint,Teams,Outlook等)的超时使用增长率。这将显示组织内各个产品的采用情况以及活跃用户加班时间出现高峰或下降的情况。本技巧将集中在按月日期表单上,并利用Office 365采用数据集进行演示。
为了能够确定每个O365应用程序使用率的增长或增加,我们需要首先执行以下操作:
- 创建日期维度表,否则将无法使用时间智能功能。
- 创建当前使用情况的度量。
- 创建上个月使用情况的度量。
- 为使用差异创建度量。
- 为增长率或使用率增加创建另一个度量。
公式中总结了我们最终要达到的目标:
Month-on-Month Usage Growth = (Current Usage – Previous Month Usage) X 100 / Previous Month Usage.
因此,让我们通过一系列步骤进行演示,但是我将不详细介绍如何在Power BI Service中创建Power BI数据集。您的数据集可能来自其他任何来源,例如SQL数据库,Azure SQL数据库,Salesforce,SharePoint等。
步骤1:创建日期维度表。
有几种技术可以 在Power BI中 创建日期维度表(又名“日历表”)。但是,我更喜欢这种技术:
<表输出> =日历(<开始日期>,<结束日期>)
Calendar = CALENDAR(DATE(2016,1,1),DATE(2022,12,31))
如下所示,以1:*(一对多关系)将Calendar表与Dates to ContentDate上的TenantProductUsage表 链接起来。您可以添加更多列以适合您的项目:
![Power BI建模页面](https://www.mssqltips.com/tipimages2/6424_calculating-percentage-growth-for-time-intelligence-solution-power-bi.001.png)
步骤2:为当前使用情况创建度量
通过汇总“ TenantProductUsage”表中的“ ActiveUserCount”字段得出当前用法,如下所示:
Current Usage = SUM(TenantProductUsage[ActiveUserCount])
![DAX计算](https://www.mssqltips.com/tipimages2/6424_calculating-percentage-growth-for-time-intelligence-solution-power-bi.002.png)
步骤3:为上个月的使用情况创建度量
为了得出上个月的用法,我使用了时间智能功能“ PREVIOUSMONTH”,如下所示:
PriorMonthActiveUsers = CALCULATE(SUM(TenantProductUsage [ActiveUserCount]),PREVIOUSMONTH(Calendar [Date]))
![DAX计算](https://www.mssqltips.com/tipimages2/6424_calculating-percentage-growth-for-time-intelligence-solution-power-bi.003.png)
步骤4:为使用差异创建度量
为此,我将 在DAX中使用变量只是为了说明,因为我可以在可能的情况下拆分计算,但是变量使DAX代码更易于阅读,如下所示:
Usage Difference = VAR _CurrentMonthUsage = TenantProductUsage[Current Usage] VAR _PreviousMonthUsage = TenantProductUsage[PriorMonthActiveUsers] VAR _Result = _CurrentMonthUsage - _PreviousMonthUsage RETURN _Result
![DAX计算](https://www.mssqltips.com/tipimages2/6424_calculating-percentage-growth-for-time-intelligence-solution-power-bi.004.png)
步骤6:为增长率或使用率增加创建度量
这是通过将使用率差异除以PriorMonthActiveUsers得出的,因此我们可以得出使用率的增长率,如下所示:
Usage Growth = DIVIDE ([Usage Difference], [PriorMonthActiveUsers], 0)CALENDAR(DATE(2016,1,1),DATE(2022,12,31))
![DAX计算](https://www.mssqltips.com/tipimages2/6424_calculating-percentage-growth-for-time-intelligence-solution-power-bi.005.png)
可视化报告
成功完成这些步骤之后,我们现在可以在Power BI中可视化已创建的度量,以查看和比较输出。如果在桌子上可视化,则应具有以下内容:
![Power BI可视化](https://www.mssqltips.com/tipimages2/6424_calculating-percentage-growth-for-time-intelligence-solution-power-bi.006.png)
![表格视觉](https://www.mssqltips.com/tipimages2/6424_calculating-percentage-growth-for-time-intelligence-solution-power-bi.007.png)
当我们在其他视觉效果上显示这些图像并使用类似于其他O365应用程序的类别应用切片器时,我们应该能够动态地可视化每个应用程序的增长率,如下所示:
![折线图和聚集柱形图](https://www.mssqltips.com/tipimages2/6424_calculating-percentage-growth-for-time-intelligence-solution-power-bi.008.png)
![瀑布图](https://www.mssqltips.com/tipimages2/6424_calculating-percentage-growth-for-time-intelligence-solution-power-bi.009.png)