1

我有一个查询来拉动漏斗的点击率,如果用户点击一个页面,它记录为“1”,否则为 NULL -

SELECT datestamp
    ,COUNT(visits) as Visits
    ,count([QE001]) as firstcount 
    ,count([QE002]) as secondcount
    ,count([QE004]) as thirdcount
    ,count([QE006]) as finalcount
    ,user_type
    ,user_loc
FROM
    dbname.dbo.loggingtable
GROUP BY user_type, user_loc

我想为每个比率设置一列,例如 firstcount/Visits、secondcount/firstcount 等以及总数(finalcount/Visits)。

我知道这可以做到

  • 通过添加“计算字段”在 Excel 数据透视表中
  • 在 SQL 中通过分组
  • 在 PowerPivot 中通过添加计算列,例如

    =IFERROR(QueryName[finalcount]/QueryName[Visits],0)
    
  • 但我需要给报告消费者一个选项,只用 user_type 或只用 user_loc 等进行切片,excel 会倾向于添加比例,这不起作用 b/c

    SUM(A/B) != SUM(A)/SUM(B)
    

在 DAX/MDX/PowerPivot 中是否有一种方法可以添加计算列/度量,以便对于任何用户定义的数据子集(日期范围、用户类型、位置等)?

4

1 回答 1

4

是的,通过计算的措施。计算列用于创建您希望在行/列/报告标题上看到的值...计算度量用于创建您希望在数据透视表的值部分中看到的值,并且可以按列中的列进行切片/切块模型。

最简单的方法是在 powerpivot 表的计算区域中创建 3 个计算的“度量”。

TotalVisits:=SUM(QueryName[visits])
TotalFinalCount:=SUM(QueryName[finalcount])
TotalFinalCount2VisitsRatio:=[TotalFinalCount]/[TotalVisits]

然后,您可以按 user_type 或仅 user_loc(或其他)对计算的度量 [TotalFinalCount2VisitsRatio] 进行切片,并且将正确计算该值。这里的区别是您明确告诉 xVelocity 引擎 SUM-then-DIVIDE。如果您创建计算列,那么引擎会认为您要先除后求和。

此外,您不必将度量分解为 3 个单独的度量……这只是一个好习惯。如果您有兴趣了解更多信息,我会推荐这本书……作者是 PowerPivot/DAX 大师,这本书非常简单明了。

于 2013-01-24T13:53:24.570 回答