Ssas 使用MDX计算每日平均订单
我试图创建一个计算成员,它应该返回每个人每周的平均订单数 下面是客户预测工作量的屏幕截图。员工可能不是一周中的所有天都在工作 计算将为:订单数量/该周的计划天数 如果周名称位于日期的同一层次结构中,则不难计算,但在本例中,它不在层次结构中,而只是维度的成员 这是我尝试过的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
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之间的任何东西。但是,如果我没有找到任何解决方案,我会考虑你的建议把它添加到层次结构中。再次感谢您的建议,当您将周和日添加到层次结构中时,我可以帮助您完成此任务-当然,如果您需要我的帮助。