Average icCube:添加计算的度量值-每个日期的平均库存

Average icCube:添加计算的度量值-每个日期的平均库存,average,iccube,iccube-reporting,Average,Iccube,Iccube Reporting,我只有一个多维数据集和几个数据表。其中一个命名为Stocks并具有下一个字段: 日期(映射到日期维度) 公司(映射到公司维度) 产品(映射到产品维度) 数量 钱 在这上面,我有[衡量][股票数量]作为总金额 然后,我需要将每个日期的平均库存添加为总和(金额)/计数(不同日期) 我尝试了下一个选项: 将计算成员[Measures].[Stock average]创建为“sum([Measures].[Stock amount])/DistinctCount([Date].[Date].[Day])

我只有一个多维数据集和几个数据表。其中一个命名为Stocks并具有下一个字段:

日期(映射到日期维度) 公司(映射到公司维度) 产品(映射到产品维度) 数量 钱 在这上面,我有[衡量][股票数量]作为总金额

然后,我需要将每个日期的平均库存添加为总和(金额)/计数(不同日期)

我尝试了下一个选项:
将计算成员[Measures].[Stock average]创建为“sum([Measures].[Stock amount])/DistinctCount([Date].[Date].[Day])”


将计算成员[Measures].[Stock average]创建为“sum([Measures].[Stock amount])/DistinctCount([Rests].[Date])”


它们都在MDX IDE中给出了奇怪的错误结果,并且在我试图从Excel查询它们时给出了错误。我可以这样做:

CREATE CALCULATED MEMBER [Measures].[Average rests] AS 
    AVG(
      EXISTING([Date].[Date].[Day].MEMBERS) ,
      [Measures].[Rests amount]
    )
我是这样做的:

CREATE CALCULATED MEMBER [Measures].[Average rests] AS 
    AVG(
      EXISTING([Date].[Date].[Day].MEMBERS) ,
      [Measures].[Rests amount]
    )
添加到多维数据集中

WITH MEMBER [Measures].[AvgTrackCost] AS
  AVG( EXISTING([Date].[Date].[Day].MEMBERS), [Measures].[Rests amount] )
SELECT
  [Measures].[AvgTrackCost] on 0,
  [Distributors].[Distributors].Members ON 1
FROM
  [Spot2d]

要在MDX Builder中查询,Oleksandr指出的解决方案很好,但是如果您使用了大量的AverageOverDays,我会认为简单性和性能方面有点不同

  • 创建一个新的度量值,用于计算不同天数计数。这可以通过在date列上添加度量值并使用distinct count作为事实聚合方法来实现。让我们假设它是[测量][有数据的天数]
  • 使用它很简单:

    WITH MEMBER [Measures].[AvgTrackCost] AS 
                [Measures].[Rests amount] / [Measures].[Days With Data]
    
    这将在100%的场景中正常工作,速度更快,扩展性更好

    请注意,没有数据的天数不计算在内,这与Avg中的行为相同