1

我正在使用 Visual Studi 和 Management Sql Server Studio 学习 MDX 和 OLAP。实际上我做了一个立方体“销售”

它是立方体销售额的度量和维度

我试着得到“每个产品和每年销售额最高的员工”,我写道

With MEMBER measures.[Maximun Sales] AS 
 MAX(([Product].[ProductName].[ProductName],[Employee].[Geography].  [Employee]), [Measures].[Sales Amount])

 MEMBER measures.[EmpLoyee] AS TOPCOUNT(([Product].[ProductName].  [ProductName], [Employee].[Geography].[Employee]), 1, [Measures].[Sales    Amount]).ITEM(0).NAME

 SELECT { measures.[Maximun Sales], MEASUREs.[EmpLoyee]} ON COLUMNS,
 ([Product].[ProductName].[ProductName], [Order Date].[Calendar].[Year]) ON    ROWS
 FROM SALES

但是查询没有用。请问,有人可以帮我吗?谢谢

4

1 回答 1

0

这对于初学者来说并不是最容易理解的。我在下面的 Adventure Works 立方体中提供了一个示例。此查询显示了 Product 和 Year 的每种组合的销售额最高的客户,这与您的要求相似,您希望可以对其进行调整。

SELECT
[Measures].[Internet Sales Amount] ON COLUMNS
,   NON EMPTY
    GENERATE
    (
        {
        [Product].[Product].[Product].MEMBERS
    *   [Date].[Calendar Year].[Calendar Year].MEMBERS
        }
    ,   (
        [Product].[Product].CURRENTMEMBER
    ,   [Date].[Calendar Year].CURRENTMEMBER
        )
    *   TOPCOUNT
        (
        [Customer].[Customer].[Customer].MEMBERS
    ,   1
    ,   [Measures].[Internet Sales Amount]
        )       
    )
ON ROWS
FROM
[Adventure Works]

这个怎么运作

您认为 TopCount 函数会帮助您是对的。我们希望获得每个产品/年的销售额排名第一的客户。

因此,我们的 Top Count 函数按销售额获得了我们的 Top 1 Customer。然后我们如何将其应用于每个产品/年?这就是 Generate 功能的帮助所在。这将在所有产品/年份组合中应用我们的 Top 1 Customer 功能。

您可以将 Generate 函数的工作方式想象为:

1)获取产品/年份的每个组合

2) 一次获得一个组合

3) 对于每个组合,获得销售额排名前 1 的客户

4) 移动到下一个组合

有关这方面的一个很好的解释,请参见此处。我还建议在此处阅读有关 Generate 功能的信息。

于 2018-02-01T14:14:04.377 回答