2013-01-23 33 views
1

我有一個查詢來爲漏斗提取點擊,其中如果用戶擊中它記錄爲「1」的頁面,則返回NULL -使用列A和列B計算比率 - 在Powerpivot/MDX/DAX中,不是SQL

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 /訪問次數,secondcount/firstcount等,以及總數(finalcount /訪問)。

我知道這是可以在Excel數據透視表在SQL加入了「計算字段」

  • 通過PowerPivot的分組
  • 通過添加CalculatedColumn,例如做

    • =IFERROR(QueryName[finalcount]/QueryName[Visits],0) 
      
    • 但我需要的只是USER_TYPE或只是user_loc等給報表使用者切片的選項,和Excel往往會添加比例,這是行不通的B/C

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

    是否有DAX/MDX/PowerPivot的添加計算的列/測量,這樣它會爲SUM(finalcount)計算/ SUM爲的任何用戶定義的子集的方式(訪問),數據(日期範圍,用戶類型,位置等)?

  • 回答

    4

    是的,通過計算的度量。計算的列用於創建想要在行/列/報表頭中看到的值...計算的度量用於創建希望在數據透視表的值部分中看到的值,並且可以按照模型。

    最簡單的方法是在powerpivot表的計算區域中創建3個計算「度量」。

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

    然後可以通過USER_TYPE或只是user_loc切片計算度量[TotalFinalCount2VisitsRatio](或其他)並且該值將被正確計算。這裏的區別在於,您明確地將xVelocity引擎告訴SUM-then-DIVIDE。如果您創建計算列,那麼引擎會認爲您需要DIVIDE-then-SUM。

    另外,您不必將測量分解爲3個單獨的測量......這只是一個好習慣。如果您有興趣瞭解更多信息,我會推薦this book ...作者是PowerPivot/DAX專家,這本書非常簡單。