POWER BI:基于多个过滤器

时间:2018-04-18 05:56:31

标签: powerbi powerbi-embedded powerbi-desktop

我对Power Bi来说相当新,并且已经在各种在线帮助论坛中进行了搜索,但未找到与我类似的版本。因此在这里张贴。不确定这是一个相当简单的还是复杂的(我认为!)

我有3列:'事件','屏幕'和'时间'(类似于下面)

enter image description here

我想做一个如下计算:

  

事件中2次“NameSubmitted”次数) - (相应的“NameSubmitted”的AVG 时间(来自事件)* 事件

中“NameSubmitted”次数的计数      

+

     

事件中2次“AddressAdded”次数) - (相应“AddAddress”的AVG 时间(来自屏幕)* 事件

中“AddressAdded”次数的计数      

+

     

事件中2次“OrderCreated”次数) - (“订单”+“订单详情”+“订单确认”的相应总和的AVG 时间(来自屏幕)* 事件)中“OrderCreated”次数的计数`

我的方法:

我尝试使用以下IF()函数计算创建一个新列但是徒劳(如下所示)并且收到以下错误:

Calc = CALCULATE( (2*SUM(IF(Table[Event] = "NameSubmitted",1,BLANK()))) - AVERAGE(IF(Table[Event] = "NameSubmitted") )) .....

  

错误:SUM函数仅接受列引用作为参数

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我不会给出完整的答案,但最后一段应该是这样的:

= 2 * COUNTROWS(FILTER(Table1, Table1[Event] = "OrderCreated"))
    - CALCULATE(AVERAGE(Table1[Time]),
          Table1[Screen] IN {"Orders", "OrderDetail", "OrderConfirmation"})
    * COUNTROWS(FILTER(Table1, Table1[Event] = "OrderCreated"))

注意:如果您将COUNTROWS()

分解出来,效率会更高
= COUNTROWS(FILTER(Table1, Table1[Event] = "OrderCreated")) *
  (2 - CALCULATE(AVERAGE(Table1[Time]),
           Table1[Screen] IN {"Orders", "OrderDetail", "OrderConfirmation"}))

你应该可以从那里得到其余的。

有多种方法可以计算事件数,而不是使用COUNTROWS()。最接近你的尝试可能是这样的:

= SUMX(Table1, IF(Table1[Event]="NameSubmitted", 1, BLANK()))