【问题标题】:Conditional MDX Query to calculate sum and average条件 MDX 查询以计算总和和平均值
【发布时间】:2013-10-16 08:18:12
【问题描述】:

我有一个销售额(SalesID、GoodsType、GrossSale、AverageSale)。我要在 MS Visual Studio SSAS 多维数据集的计算选项卡中编写两个 MDX 表达式来计算 GrossSale 的总和和 GrossSale 的平均值,其中 GoodsType 是“食物”。如果有人请为我写 MDX 表达式?

【问题讨论】:

  • 我为 sum 写了这个表达式,但它不起作用! CREATE MEMBER CURRENTCUBE.[Measures].Sales AS SUM([Measures].[Gross Sale], [Measures].[Datatype] = "2"), VISIBLE = 1, DISPLAY_FOLDER = 'Forecast' ;
  • 你想总结什么?查看msdn.microsoft.com/en-us/library/ms145484(v=sql.105).aspx,您会意识到Sum 需要一个集合作为它的第一个参数,并且可以选择一个数字表达式作为第二个参数。 GrossSale 还没有求和吗?那你为什么要总结呢?
  • 我有数据表。其中 GrossSale 和 Datatype 是列。假设在 GrossSale 中我有 (100, 200, 400, 130, 350),在数据类型中我分别有 (5,2,6,8,2)。现在我想要数据类型 2 的 GrossSale 总和。然后我有 GrossSale = 550,即 200+350。因为对于数据类型 2,我有 200 和 350。希望你现在明白了。
  • 如果Datatype 是一个属性,比如在维度Dim 中,而 GrossSale 是一个度量,那么您不必自己进行任何求和。在 MDX 中,您只需使用像 ([Dim].[DataType].[2], [Measures].[GrossSales]) 这样的元组即可。
  • 太棒了,它的工作原理!很多:)

标签: sum mdx average


【解决方案1】:

在许多情况下,您依靠 Analysis Services 引擎为您进行求和。要为维度Dim 的属性DataType 的单个属性成员2 获取度量[GrossSales] 的总和,假设度量配置为使用总和作为其聚合值,您可以在元组中引用它喜欢

([Dim].[DataType].[2], [Measures].[GrossSales])

然后就完成了。 要获得三个不同值的总和,您可以对元组求和,即。 e.

([Dim].[DataType].[1], [Measures].[GrossSales]) +
([Dim].[DataType].[2], [Measures].[GrossSales]) +
([Dim].[DataType].[3], [Measures].[GrossSales])

或者使用sum函数如下:

Sum( { [Dim].[DataType].[1], [Dim].[DataType].[2], [Dim].[DataType].[3] },
    [Measures].[GrossSales])

Sum 的第一个参数是一个集合,第二个参数是一个数值表达式。

【讨论】:

  • 你好,度量和维度之间是否有直接关系?因为我必须测量(Data,GrossSale)和一维(Datatype),而 GrossSale 与 Datatype 有直接关系,与 Data 有间接关系。我从总销售额中获得价值,而不是从数据中获得价值。你能给我一些提示吗?
  • 首先,这是一个单独的问题。所以最好分开发。其次,如果您能准确描述“间接关系”的含义,这将有所帮助。您的数据模型以及 BIDS 中多维数据集设计器的“维度使用”选项卡上的设置会有所帮助。
  • @Tuhin 如果答案正确,您应该将其标记为答案。
  • 好的,对于不相关的话题很抱歉。现在它的相关主题。如果我有 3 个维度(数据类型、客户、产品)和一个度量(GrossSales)。那么如果我想要 ProductID = 1,2,3 和 Dataype = 4,5,6 的 GrossSales ,MDX 查询会是什么?这里 Datatype 与 GrossSales 有关系,Customer 与 GrossSales 有关系,Product 与 Customer 有关系。如果你请帮助我。抱歉,我找不到任何标记为答案的选项!
  • @Tuhin 要将答案标记为已接受答案,请单击左侧的复选标记。并且:Stack Overflow 不是讨论板,而是包含问题和答案;因此,一旦开始了原始问题和标题未涵盖的新主题,您应该发布一个标题涵盖新问题的新问题,以便其他人可以轻松搜索和找到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
相关资源
最近更新 更多