statistics - DAX - 复杂滚动平均线
问题描述
以最简单的形式,我试图实现“活动资产”/“事件数量”的 12 个月滚动平均值。
所需的计算以 Excel 形式更容易解释:
Year Month | Average # Equipment | Total Incidents
2018 January 100 6
2018 February 101 8
2018 March 101 7
................. ........ ........
Calculation = SUM(C2:C14)/SUM(D2:D14)
相关 Power BI 数据位于两个表中 -“数据 - 资产”和“数据 - WO”。
每个事件都有一个“DateIssued”,每个资产都有一个“CommissionDate”和“DecommissionDate”。
我应该仅在相关日期介于委员会和退役日期之间时计算资产,并且只计算当前处于活动状态的资产的事件(在日期之间)。
以下是我迄今为止最接近的尝试。但是,它是在 365 天的时间范围内描绘的,而不是 12 个月。此外,它不会按照所需计算的要求对资产计数进行求和。
Calculation =
CALCULATE (
IF (
COUNT ( 'DateTable'[Date] ) >= 365,
COUNTROWS ( 'Data - Assets' ) / COUNT ( 'Data - WO'[ID] )
),
FILTER (
ALLSELECTED ( 'DateTable'[Date] ),
'DateTable'[Date]
> ( MAX ( 'DateTable'[Date] ) - 365 )
&& 'DateTable'[Date] <= MAX ( 'DateTable'[Date] )
),
FILTER (
ALLSELECTED ( 'Data - Assets' ),
(
'Data - Assets'[CommissionDate] <= MAX ( DateTable[Date] )
|| ISBLANK ( 'Data - Assets'[CommissionDate] )
)
&& (
'Data - Assets'[DecommissionDate] >= MAX ( 'DateTable'[Date] )
|| ISBLANK ( 'Data - Assets'[DecommissionDate] )
)
)
)
我在正确的轨道上吗?非常感谢 DAX 的新手和任何建议。
解决方案
与其编写复杂的度量计算,我更喜欢拆分计算,以便更容易操作。您可以使用类似于以下的内容:
Count = IF(Data[CommissionDate]>=DATEADD(DateTable[Date],-12,MONTH)&&Data[DeCommissionDate]<=DATEADD(DateTable[Date]),1,0)
Assets1 = IF(Data[CommissionDate]>=DATEADD(DateTable[Date],-12,MONTH)&&Data[DeCommissionDate]<=DATEADD(DateTable[Date]),Data[Assets],0)
12MonthCalc = SUM(Data[Assets1])/SUM(Data[Count])
您可以用您的确切细节替换日期条件,您应该有解决方案。希望这可以帮助。
推荐阅读
- ios - 从 UserDefaults 中提取 Picker
- python - 如何在使用 google-cloud-billing-budgets 库时解决 ThresholdRule TypeError
- r - 在 R Shiny 中,如何正确链接矩阵值?
- c# - C# 错误:该进程无法访问该文件,因为它正被另一个进程使用
- azure-data-explorer - 在 Kusto 中将分钟转换为秒
- webi - 如何在 SAP WebI 中将老化数据汇总到年龄组中
- ethereum - Gas Estimation Error - 如果我继续使用它可以正常工作,但为什么要收取这么高的费用?
- html - @page :left 和 @page :left 在 Django 和 xhtml2pdf 库中不起作用
- azure - 如何忽略 Azure API 管理策略执行中的错误
- amazon-web-services - AWS Cloudformation:从自动扩展启动配置中标记块设备