2015-09-04 48 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