1

我正在尝试创建一个计算成员,它应该返回每人每周的平均订单。

下面是客户希望预测工作负载的屏幕截图。员工可能不会在一周内的所有日子都工作。

计算将是:订单数/该周的预定天数。

如果周名称在日期的同一层次结构中,则计算这一点并不难,但在这种情况下,它不在层次结构中,而只是维度的成员。

enter image description here

Required Output

这是我尝试过的 MDX:

Avg ( Descendants
( [Date Planned].[Date Planned].CurrentMember, [Date Planned].[Date Planned].[Date Planned] ),
[Measures].[Orders Qty] )
4

4 回答 4

0

可能类似于以下内容:

WITH 
  MEMBER [Measures].[PlannedDayCnt] AS 
    Count
    (
      Exists
      (
        (EXISTING 
          [Date Planned].[Date Planned].[Date Planned].MEMBERS)
       ,[Date Planned].[Week Of Year].currentmember
      )
    ) 
  MEMBER [Measures].[Averge Orders] AS 
    [Measures].[Orders Qty] / [Measures].[PlannedDayCnt] 
SELECT 
  {
    [Measures].[Orders Qty]
   ,[Measures].[PlannedDayCnt]
   ,[Measures].[Averge Orders]
  } ON 0
 ,
    [Person].[PersonName].[PersonName] 
  * [Date Planned].[Week Of Year].[Week Of Year] ON 1
FROM [aCube];

我想测试但不确定如何在AdvWrks多维数据集中建模您的场景。

于 2015-11-27T09:44:08.200 回答
0

尝试使用这个:

WITH MEMBER [Measures].[avg_week] AS
  Avg ( EXISTING { [Date Planned].[Week Of Year].[Week Of Year] },
  [Measures].[Orders Qty] )
SELECT [Measures].[avg_week] ON COLUMNS,
NON EMPTY
{ [Person].[PersonName].[PersonName] * [Date Planned].[Week Of Year].[Week Of Year] } ON ROWS
FROM [Your cube]

让我知道这是否可以帮助您。

于 2015-11-26T15:26:06.190 回答
0

当您将星期和日期添加到层次结构中时会容易得多,但如果您没有可能添加它,则有不同的非优雅解决方案。

如果您假设此成员将始终与 Week 一起用于行,则您的成员计算如下: 在此处输入图像描述

这仅在行上的几周内才能正常工作 - 所以我建议按周和日扩展您的日历层次结构,然后我们可以讨论更优雅的解决方案。

于 2015-11-26T13:45:33.343 回答
0

我首先想看看有多少个“日期”属于一周。这很容易,就像那周为那个人下订单的那些日子一样。

NonEmpty
        (
         [Date Planned].[Date Planned].[Date Planned].MEMBERS,
         (
          [Date Planned].[Week Of Year].currentmember, 
          [Person].[PersonName].currentmember, 
          [Measures].[Orders Qty]
         )
        )

现在您已经有了“当前”周和“当前”人员的必要日期,您需要计算这组日期的平均订单数量。它看起来像这样:

AVG
   (
    NonEmpty
            (
             [Date Planned].[Date Planned].[Date Planned].MEMBERS,
             (
              [Date Planned].[Week Of Year].currentmember, 
              [Person].[PersonName].currentmember, 
              [Measures].[Orders Qty]
             )
            )
    , [Measures].[Orders Qty]
   )

您的最终构造需要是:

WITH MEMBER Measures.AverageOrderPerDay AS
AVG
   (
    NonEmpty
            (
             [Date Planned].[Date Planned].[Date Planned].MEMBERS,
             (
              [Date Planned].[Week Of Year].currentmember, 
              [Person].[PersonName].currentmember, 
              [Measures].[Orders Qty]
             )
            )
    , [Measures].[Orders Qty]
   )

SELECT 
    {
     [Measures].AverageOrderPerDay,
     [Measures].[Orders Qty]
    }
ON 0,
    [Person].[PersonName].[PersonName].MEMBERS
  * [Date Planned].[Week Of Year].[Week Of Year].MEMBERS ON 1
FROM [YourCube]
于 2015-11-27T12:12:31.103 回答