mdx期间的第一个值

时间:2014-11-03 11:32:42

标签: mdx mondrian

我有一个带有“销售”衡量标准的多维数据集,我们每天都有销售单位数量。我们的时间维度为'Year>周>一天。

我需要在计算字段的非空销售期内获得第一天和最后一天的销售额。我尝试过OPENINGPERIOD和CLOSINGPERIOD,但他们只在周一和周日返回一周...问题是,有时周一是假期,周日总是假期,我得到空数据(假期我们没有销售)......这里是我最后一天的例子:

WITH
  MEMBER 
   [Measures].[sales end] AS 
      '((CLOSINGPERIOD([Time.Weeks].[Day],[Time.Weeks].CurrentMember)
       , [Measures].[sales]))'
SELECT 
    {[Measures].[sales], [Measures].[sales end]} ON COLUMNS, 
 NON EMPTY 
   ({[Time.Weeks].[Week].Members}) ON ROWS 
FROM [cubSales]

我需要在那段时间内获得非空销售的最后一天...它应该是星期五,但如果星期五是假期,那应该是星期四...我的意思是本周的最后一天,其值为衡量销售额..

3 个答案:

答案 0 :(得分:0)

一个简单的解决方案就是从时间维度中省略假期。

答案 1 :(得分:0)

蒙德里安没有假期的概念。我将使用内置的假期列表实现我自己的MDX功能。这是一种灵活的方法,可以扩展到支持来自不同国家的不同假期。

答案 2 :(得分:0)

在我们的立方体上测试过并且似乎工作正常(只是没有关于假期的事情!)

SELECT 
  {
    [Measures].[sales]
  } ON COLUMNS
 ,NON EMPTY 
    Generate
    (
      [Time.Weeks].MEMBERS
     ,Tail
      (
        NonEmpty
        (
          [Time.Weeks].CurrentMember * [Time.Weeks].[Day].MEMBERS //<<I think .members is generally default but should do the same thing if we are explicit
         ,[Measures].[sales]
        )
      )
    ) ON ROWS
FROM [cubSales];