Powerbi 在SSAS表格的DAX度量中使用SUMX时,如何从用户选择中删除行上下文?
如何从SUMX中删除行上下文,使其包含正在迭代的表变量的所有记录 我尝试了这一点,但没有效果(用过滤器包装表格以显示“所有期间日期值”)——这仍然不是我想要的:Powerbi 在SSAS表格的DAX度量中使用SUMX时,如何从用户选择中删除行上下文?,powerbi,dax,ssas-tabular,Powerbi,Dax,Ssas Tabular,如何从SUMX中删除行上下文,使其包含正在迭代的表变量的所有记录 我尝试了这一点,但没有效果(用过滤器包装表格以显示“所有期间日期值”)——这仍然不是我想要的: SUMX(FILTER(varCoverageTableYTD , ALL('Equipment Cost on Rent With Branch'[PeriodDate]) , DIVIDE([Days on Rent with Branch], [Billable Days with Branch])
SUMX(FILTER(varCoverageTableYTD
, ALL('Equipment Cost on Rent With Branch'[PeriodDate])
, DIVIDE([Days on Rent with Branch], [Billable Days with Branch])
*
DIVIDE([Billable Days with Branch], [Total Days with Branch])
*
'Equipment Cost on Rent With Branch'[EquipmentCostForCORMeasure_CCUR]
))
我以前采取了不同的方法。我相信我的问题是一个过滤器上下文,我删除了它。这样做之后,我只能假设是SUMX迭代器继承了行上下文
以下是完整的度量定义。我相信我已经将问题隔离到了SUMX(正如我已经描述的那样)。但是,显示整个定义的代码可能会有好处:
// Convert the user selected period into Begin and End Dates
VAR varLastDateYTD = LASTDATE(DATESYTD('Calendar'[Calendar Date]))
VAR varFirstDateYTD = DATE(YEAR(varLastDateYTD), 1, 1)
// Remove the filter context which is coming from the user selection
VAR varCoverageTableAllDates = CALCULATETABLE('Equipment Cost on Rent With Branch'
, ALL('Equipment Cost on Rent With Branch'[PeriodDate])
)
// Filter the table to the calculated Begin and End Dates
VAR varCoverageTableYTD = FILTER(varCoverageTableAllDates
, 'Equipment Cost on Rent With Branch'[PeriodDate] <= varLastDateYTD
&& 'Equipment Cost on Rent With Branch'[PeriodDate] >= varFirstDateYTD
)
// Iterate over the new table, calculating on a per row basis.
// Does SUMX get a row context from the user selection?
// My result is limited to the user selected period.
RETURN SUMX(varCoverageTableYTD,
, DIVIDE([Days on Rent with Branch], [Billable Days with Branch])
*
DIVIDE([Billable Days with Branch], [Total Days with Branch])
*
'Equipment Cost on Rent With Branch'[EquipmentCostForCORMeasure_CCUR]
)
//将用户选择的时段转换为开始和结束日期
VAR varLastDateYTD=LASTDATE(DATESYTD('Calendar'[Calendar Date]))
VAR varFirstDateYTD=日期(年份(varLastDateYTD),1,1)
// 删除来自用户选择的筛选器上下文
VAR varCoverageTableAllDates=CALCULATETABLE('分公司租赁的设备成本'
,全部('与分公司租赁的设备成本'[期间日期])
)
//根据计算的开始和结束日期筛选表
VAR varCoverageTableYTD=过滤器(varCoverageTableAllDates
,“与分公司租赁的设备成本”[PeriodDate]=varFirstDateYTD
)
//迭代新表,按每行计算。
//SUMX是否从用户选择中获取行上下文?
//我的结果仅限于用户选择的时段。
返回SUMX(varCoverageTableYTD,
, 除以([分公司租赁天数],[分公司计费天数])
*
除以([分支机构的计费天数],[分支机构的总天数])
*
'与分公司租赁的设备成本【公司设备成本】
)
你能发布你的数据模型图吗?谢谢。模型相当大。我发布了一张图片,显示了关注的关系。(仅供参考:目前还没有双向过滤器。)可能需要查看[与分行合租天数]、[与分行合租天数]、[与分行合租天数]、[与分行合租天数]的公式measuresEach很简单:Measure=SUM([it's column value]),因此[Days on Rent]=SUM([Coverage Table'[FactDaysOnRent])在这条推理路线上(从度量的上下文转换),我以前曾尝试使用YTD DAX函数对YTD度量进行此操作,这确实带来了一些其他挑战。