如何在 PBI 中使用 DAX 根据标准计算 Avg

How to calc Avg based on criteria using DAX in PBI

我设法通过添加基于完成状态的计算列 TimeToComplete,因为 DAX 不接受空白,所以必须输入 -999。

[TimeToComplete] = 
if('Table1'[Status]<>"incomplete",
     'Table1'[Date completed]-'Table1'[Date Assigned],-999
  )

现在我的问题是,当我尝试创建一个度量来获取 TimeToComplete 列上的总体 Avg 时,它采用了所有内容,包括不起作用的 -999。但我无法使用 IF 进行测量。我怎样才能获得完成总体平均时间的衡量标准?另外,我怎样才能获得平均时间来完成每项任务的细分。

我会在表格中输入一个度量:

TimeToComplete := 
AVERAGEX ( 
    FILTER ( 
        'Table1' , 
        'Table1'[Status'] <> "incomplete"
    ),
    'Table1'[TimeToComplete]
)

例如,如果您将其放入 table 视觉对象中,则此度量应该适用于总任务和每项任务。

要省略您已经添加的计算列,您可以这样做,它独立于 'Table1'[TimeToComplete] 列:

TimeToComplete := 
AVERAGEX ( 
    FILTER ( 
        'Table1' , 
        'Table1'[Status'] <> "incomplete"
    ),
    DATEDIFF (
        'Table1'[Date Assigned] ,
        'Table1'[Date completed] ,
        DAY
    )
)

您不能在度量中使用构造 IF ( 'Table'[Col] = "Value" , ... ),只能在计算列或扫描 table 的迭代器中使用,因为行上下文会提供 1 个值进行比较。

一些度量可以使用SELECTEDVALUE ( ... )函数作为聚合方法来传递特定值进行比较。