MDX获取值并在层次结构上使用它

MDX获取值并在层次结构上使用它,mdx,Mdx,我有一个MDX脚本,我的目标是能够获得一个日期的值,它可以是一天、一周、一个月、一个季度或一年,然后在层次结构上使用它 WITH MEMBER measures.suma AS Sum ( [Date Local].[year-quarter-month-week-day].Children ,IIF ( ( [Measures].[Agent Time Logged in hh

我有一个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脚本中所看到的那样,我想对代理的所有活动进行汇总,客户可以选择任何筛选器,每天、每周、每月、季度或每年。
当然,他们可以使用我的层次结构“[Date Local].[Month].&[2015-08 August]”,但我的客户正在使用
EXCEL
创建报告,他们可以使用日期维度的任何属性


因此,我的目标是找到一种方法,向我的
mdx
脚本表明,如果客户机选择任何属性,应该能够获取当前成员并使用层次结构进行计算。

也许只需尝试关键字
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
我找到了解决办法

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

我认为您需要以某种方式更改
Sum
函数中的第一个参数:
[Date Local].[year-quarty-month-week-day]。Children
我无法更改,因为我需要使用此层次结构才能每天求和。这里的问题是,客户可以使用我的dim date的任何属性作为过滤器,我需要找到一种方法将属性发送到层次结构,然后求和。我有一个简单的想法-不确定它是否会起作用,尽管hi@whytheq,它不起作用。我给你更多的例子:LoginName | DATE | FTE bastien | 2015年8月6日| 0.9542 bastien | 2015年8月25日| 1 FTE=iif。。。。应该是19542年。。。正如您所看到的,我每个用户有两行。但是如果我执行你的查询,我得到了6954242..Hi Raul-如果没有我建议的关键字
EXISTING
,你的解决方案是否有效?Hi@whytheq,我一直在用现有的测试脚本,但我没有尝试没有。我应该脱掉它吗?我想说的是,如果脚本只在包含
现有
的情况下工作,那么我就回答了你的问题?嗨@whytheq很抱歉回答得太晚了,但我测试了查询,没有现有的不工作,现有的工作100%。