【问题标题】:MDX - 3rd + dimension example neededMDX - 需要 3rd + 维度示例
【发布时间】:2016-05-09 15:42:18
【问题描述】:

我正在努力学习 MDX。我是一位经验丰富的 SQL 开发人员。

我正在尝试查找具有两个以上维度的 MDX 查询示例。每个讨论 MDX 的网页都提供了简单的二维示例链接:

select 
{[Measures].[Sales Amount]} on columns,
Customer.fullname.members on rows
from [Adventure Works DW2012]

我正在寻找使用以下别名的示例:PAGES(第三维?)、section(第四维?)和 Chapter(第五维?)。我试过了,但我认为它不正确:

select 
{[Measures].[Sales Amount]} on columns,
Customer.fullname.members on rows,
customer.Location.[Customer Geography] as pages
from [Adventure Works DW2012]

我正在尝试使用 MDX 查询(来自 AdventureWorks DW2012)获取此输出:

【问题讨论】:

    标签: ssas mdx


    【解决方案1】:

    这不是您的屏幕截图中的 3 维结果集,除非从中裁剪了一些内容。

    有点像

    SELECT [Geography].[Country].Members ON 0,
    [Customer].[CustomerName].Members ON 1
    FROM [whatever the cube is called]
    WHERE [Measures].[Sales Amount]
    

    (维度/层次结构/级别名称可能不完全正确) 会给出一个与您消息中的结果集类似的结果集。

    我所知道的任何客户端工具中都没有使用超二维维度和维度名称。 (其他人可能知道不同)。它们似乎存在于 MDX 中,因此 MDX 可以将 >2 维结果集交给可以处理它们的客户端(例如,MDX 子查询将其结果交给主查询)。

    MDX 中一个常用的技巧是通过交叉连接将两个维度的成员放到一个轴上:

    选择 {[Date].[Calendar Date].[Calendar Year].Members * [Geography].[Country].Members} ON 0, [其他] ON 1 FROM [立方体]

    【讨论】:

    • 好的,谢谢。如果客户端工具无法处理,多维建模还有什么意义?
    • 好问题。 MD 建模的要点在于,它使处理数据非常灵活,无论是在查询代码中(如下面的Whytheq 子查询示例中),还是在客户端界面本身。您实际上无法获得 3 维结果集,但您可以选择组合轴上的任何维度以及作为切片器的任意数字。
    • 我相信 Excel 能够显示三维 + 结果集(请参阅我原帖中的屏幕截图)。对吗?
    • 我要补充一点,Adventureworks 教程虽然很有用,但实际上掩盖了 MD 建模的一些基础知识,通过浮华和炫耀它可以做什么,跳过基本概念。 SSAS 过度使用向导来创建维度/度量值组,恕我直言。通过创建一些您自己的简单表(客户、城镇、销售等)并从无到有构建一个多维数据集,您可能会得到更好的介绍。
    • +1 用于引用层次结构,这很有帮助。我猜如果数据透视表引用三个维度 e.f.客户、产品和位置,那么它是三个维度吗? - 即使它以平面结构显示。层次结构允许您向下钻取维度。对吗?
    【解决方案2】:

    以下内容怎么样 - 它不会将超过两个维度发送回平面屏幕,但它明确使用了相当多的维度:

    SELECT 
      [Measures].[Sales Amount] ON O,
      [Customer].[fullname].MEMBERS ON 1
    FROM
    ( 
      SELECT
        [Date].[Calendar Month].[Calendar Month].&[February-2012] ON 0,
        [Geography].[Country].[Country].&[Canada] ON 1,
        [Product].[Product].&[Red Bike] ON 2,
        [Customer].[Customer].&[foo bar] ON 3
      FROM [Adventure Works DW2012]
    )
    

    我已经完成了维度 |层次结构 |成员组合,因为我无权访问多维数据集。

    此外,如果我们考虑 隐式 维度,则采用以下方式:

    SELECT 
      [Customer].[Location].[Customer Geography]  ON 0,
      [Customer].[fullname].[fullname].&[Aaron Flores] ON 1
    FROM [Adventure Works DW2012]
    WHERE 
      (
       [Measures].[Sales Amount]
      );
    

    在切片器上,我使用了大括号 (..),表示 tuple,但这实际上是以下内容的简写:

    SELECT 
      [Customer].[Location].[Customer Geography]  ON 0,
      [Customer].[fullname].[fullname].&[Aaron Flores] ON 1
    FROM [Adventure Works DW2012]
    WHERE 
      (
       [Measures].[Sales Amount]
      ,[Date].[Calendar Month].[Calendar Month].[All],
      ,[Geography].[Country].[Country].[All],
      ,[Product].[Product].[All]
      ,...
      ,...
      ....
      );
    

    多维数据集中每个维度的All 成员都可以包含在此切片器中,而不会影响结果。

    因此,mdx 的整体性质是多维的 - 是的,您不会得到超过一个二维表返回到您的屏幕,但您到达该单元集的方式很可能涉及多个维度。

    【讨论】:

    • 客户端应用程序中使用多维结构还是仅用于优化存储?我相信 Excels Pivot Table 允许用户查看多维数据结构,但是我可能是错的 - 我是新手。我对吗? +1的例子。我明天试试。
    • Excel 数据透视表是与 olap 同时创建的 - 我相信它们都使用相同的技术,换句话说,当数据透视表只是一个沼泽标准数据透视表时,它使用的是多维技术在后台。将 excel 数据透视表连接到完整的多维多维数据集是访问多维数据集的标准方式 - 这在 Excel 中已存在 10 多年。
    • 谢谢。我原帖中的截图是三维显示吗?
    • 我想只要我们有受多个类别(维度)影响的数字(度量),那么我们就处于多维环境中......所以是的,屏幕截图是一个平面表,但它仍然是多维数据示例(可见 1 个度量和 2 个维度,但隐含了许多其他维度)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多