Ssas 使用MDX计算每日平均订单

Ssas 使用MDX计算每日平均订单,ssas,mdx,cubes,msbi,Ssas,Mdx,Cubes,Msbi,我试图创建一个计算成员,它应该返回每个人每周的平均订单数 下面是客户预测工作量的屏幕截图。员工可能不是一周中的所有天都在工作 计算将为:订单数量/该周的计划天数 如果周名称位于日期的同一层次结构中,则不难计算,但在本例中,它不在层次结构中,而只是维度的成员 这是我尝试过的MDX: Avg ( Descendants ( [Date Planned].[Date Planned].CurrentMember, [Date Planned].[Date Planned].[Date Planne

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

下面是客户预测工作量的屏幕截图。员工可能不是一周中的所有天都在工作

计算将为:订单数量/该周的计划天数

如果周名称位于日期的同一层次结构中,则不难计算,但在本例中,它不在层次结构中,而只是维度的成员

这是我尝试过的MDX:

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

将周和日添加到层次结构中会容易得多,但如果不可能添加周和日,则存在不同的非优雅解决方案

如果您假定此成员将始终与Week on rows一起使用,则您的成员计算将如下所示:


这只适用于行上的周-因此我建议按周和日扩展日历层次结构,然后我们可以讨论更优雅的解决方案。

将周和日添加到层次结构中会更容易,但如果您不可能添加此内容,有不同的非优雅解决方案

如果您假定此成员将始终与Week on rows一起使用,则您的成员计算将如下所示:

这只适用于连续数周-因此我建议按周和日扩展日历层次结构,然后我们可以讨论更优雅的解决方案。

尝试使用以下方法:

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]
如果这对您有帮助,请告诉我。

尝试使用以下方法:

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]

如果这对您有帮助,请告诉我。

可能是以下内容:

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
多维数据集中模拟您的场景。

可能类似于以下内容:

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
多维数据集中模拟您的场景。

我想先看看一周有多少个“日期”。这将是很容易的,因为这将是那些日子里,为该人下订单的那一周

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]

我首先想知道一周有多少个“日期”。这将是很容易的,因为这将是那些日子里,为该人下订单的那一周

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]

共享您迄今为止尝试过的脚本以帮助您。我知道这是错误的,因为行中没有指定日期。平均值(子代([计划日期][计划日期])。当前成员[计划日期][计划日期][计划日期],[措施][订单数量])您需要每周平均值吗?如果是,请编辑问题的标题。你为什么不使用
week
属性?@Murty我们的答案有没有帮助你找到解决方案?分享你迄今为止尝试过的脚本以帮助你。我知道这是错误的,因为行上没有指定日期。平均值(子代([计划日期][计划日期])。当前成员[计划日期][计划日期][计划日期],[措施][订单数量])您需要每周平均值吗?如果是,请编辑问题的标题。你为什么不使用
week
属性?@Murty我们的答案有没有帮助你找到解决方案?谢谢你的回复。在这种情况下,这可能不适用于我,因为天数是不固定的。根据个人情况,它可以是1到7之间的任何东西。但是,如果我没有找到任何解决方案,我会考虑你的建议把它添加到层次结构中。再次感谢您的建议,当您将周和日添加到层次结构中时,我可以帮助您完成此操作-当然,如果您需要我的帮助。谢谢您的回复。在这种情况下,这可能不适用于我,因为天数是不固定的。根据个人情况,它可以是1到7之间的任何东西。但是,如果我没有找到任何解决方案,我会考虑你的建议把它添加到层次结构中。再次感谢您的建议,当您将周和日添加到层次结构中时,我可以帮助您完成此任务-当然,如果您需要我的帮助。