2015-09-04 36 views
0

我有一個MDX腳本,我的目標是能夠獲取日期的值,可以是一天,一週,一個月,一個季度或一年,然後使用它在層次結構上。MDX獲取值並在層次結構上使用它

WITH 
    MEMBER measures.suma AS 
    Sum 
    (
     [Date Local].[year-quarter-month-week-day].Children 
    ,IIF 
     (
      (
        [Measures].[Agent Time Logged in hh:mm:ss] 
       - 
        [Measures].[Activity Time Break] 
       - 
       [Measures].[Activity Time Meeting] 
      - 
       [Measures].[Activity Time Training] 
      ) 
     /
      26400/86400 
     > 1 
     ,1 
     , 
      (
       [Measures].[Agent Time Logged in hh:mm:ss] 
       - 
       [Measures].[Activity Time Break] 
      - 
       [Measures].[Activity Time Meeting] 
      - 
      [Measures].[Activity Time Training] 
     ) 
     /
      26400/86400 
    ) 
    ) 
SELECT 
    { 
    measures.suma 
    ,[Measures].[MyKeys] 
    ,[Measures].[Agent Time Logged in hh:mm:ss] 
    ,[Measures].[Activity Time Break] 
    ,[Measures].[Activity Time Meeting] 
    ,[Measures].[Activity Time Training] 
    ,[Measures].[Activity time Lunch] 
    } ON 0 
,NON EMPTY 
    [Agent].[login fullname].[login fullname] ON 1 
FROM [HP TRANSACTIONAL] 
WHERE 
    [Date Local].[Month].&[2015-08 August];-- DOESNT WORK 
--[Date Local].[year-quarter-month-week-day].[Week].&[2015 Week 35] --IT WORKS 

正如你可以在我的MDX script我要總結代理的所有活動見及客戶可以選擇任何過濾器,每天,每週,每月,每季度或每年。
當然,這可以使用我的層次結構「[Date Local]。[Month]。& [2015-08 August]」但我的客戶使用EXCEL來創建報告,他們可以使用日期維度的任何屬性。

所以我的目標是找到一種方法來指示我的mdx腳本,如果客戶端選擇任何屬性,應該能夠獲取當前成員並使用層次結構進行計算。

+0

我覺得你需要改變'Sum'函數的第一個參數:'[Date Local]。[year-quarter-month-week-day] .Children' – whytheq

+0

我不能因爲我需要使用這個層次結構能夠每天結算。這裏的問題是,客戶端可以使用我的昏暗日期的任何屬性作爲過濾器,我需要找到一種方法將屬性發送到層次結構,然後進行總結。 –

+0

我有一個簡單的想法 - 不知道它是否會工作,雖然 – whytheq

回答

0

也許只是嘗試關鍵字Existing試圖迫使背景成你的措施suma

WITH 
     MEMBER [measures].[suma] AS 
     Sum 
     (
      EXISTING([Date Local].[year-quarter-month-week-day].MEMBERS) 
     ,IIF 
      (
       (
         [Measures].[Agent Time Logged in hh:mm:ss] 
        - 
         [Measures].[Activity Time Break] 
        - 
        [Measures].[Activity Time Meeting] 
       - 
        [Measures].[Activity Time Training] 
       ) 
      /
       26400/86400 
      > 1 
      ,1 
      , 
       (
        [Measures].[Agent Time Logged in hh:mm:ss] 
        - 
        [Measures].[Activity Time Break] 
       - 
        [Measures].[Activity Time Meeting] 
       - 
       [Measures].[Activity Time Training] 
      ) 
      /
       26400/86400 
     ) 
     ) 
    SELECT 
     { 
     measures.suma 
     ,[Measures].[MyKeys] 
     ,[Measures].[Agent Time Logged in hh:mm:ss] 
     ,[Measures].[Activity Time Break] 
     ,[Measures].[Activity Time Meeting] 
     ,[Measures].[Activity Time Training] 
     ,[Measures].[Activity time Lunch] 
     } ON 0 
    ,NON EMPTY 
     [Agent].[login fullname].[login fullname] ON 1 
    FROM [HP TRANSACTIONAL] 
    WHERE 
     [Date Local].[Month].&[2015-08 August];-- DOESNT WORK 
    --[Date Local].[year-quarter-month-week-day].[Week].&[2015 Week 35] --IT WORKS 
0

我找到了解決辦法!

WITH 
    MEMBER measures.suma AS 
    Sum 
    (
     (EXISTING 
     [Date Local].[year-quarter-month-week-day].[Day name]) 
    ,IIF 
     (
      (
        [Measures].[Agent Time Logged in hh:mm:ss] 
       - 
        [Measures].[Activity Time Break] 
       - 
       [Measures].[Activity Time Meeting] 
      - 
       [Measures].[Activity Time Training] 
      ) 
     /
      26400/86400 
     > 1 
     ,1 
     , 
      (
       [Measures].[Agent Time Logged in hh:mm:ss] 
       - 
       [Measures].[Activity Time Break] 
      - 
       [Measures].[Activity Time Meeting] 
      - 
      [Measures].[Activity Time Training] 
     ) 
     /
      26400/86400 
    ) 
    ) 
SELECT 
    { 
    measures.suma 
    ,[Measures].[Agent Time Logged in hh:mm:ss] 
    ,[Measures].[Activity Time Break] 
    ,[Measures].[Activity Time Meeting] 
    ,[Measures].[Activity Time Training] 
    ,[Measures].[Activity time Lunch] 
    } ON 0 
,NON EMPTY 
    [Agent].[login fullname].[login fullname] ON 1 
FROM [HP TRANSACTIONAL] 
WHERE 
    [Date Local].[Date Standard].&[2015-08-24T00:00:00]; 
--TEST 
--[Date Local].[Week].&[2015 Week 35] 
--[Date Local].[Month].&[2015-08 August] 
--[Date Local].[year-quarter-month-week-day].[Week].&[2015 Week 35] 

我希望這個解決方案可以幫助其他人。 Raul

+0

您好Raul - 您的解決方案沒有關鍵字'EXISTING'我建議嗎? – whytheq

+0

嗨@whytheq,我現在一直在測試劇本,但我沒有嘗試過。我應該把它關掉嗎? –

+0

我在說的是,如果腳本只適用於包含'EXISTING',那麼我回答了你的問題? – whytheq