zoukankan      html  css  js  c++  java
  • 关于Descendants()的理解

    以下是联机丛书中的解释:

    返回成员在指定级别或距离上的后代集,可以选择包括或不包括其他级别上的后代。 

    对照《MDX解决方案》来看,简单可以这样理解:

    考虑[Time].[YQMD].[Year].[2005],这是一个Year等级的成员,在其之下还有Quarter、Month、Day,组成了一个树状结构。

    如果不用Descendants(),想查看[Time].[YQMD].[Year].[2005]之下每嫉妒合计,那可能只能手动写代码了,比如

    select {[Product].[Tools], [Product].[Toys]} on columns,
        {[Time].[YQMD].[Quarter].[Q1, 2005],
         [Time].[YQMD].[Quarter].[Q2, 2005],
         [Time].[YQMD].[Quarter].[Q3, 2005],
         [Time].[YQMD].[Quarter].[Q4, 2005]}
        on rows
    from sales
    where [Measures].[Dollar Sales]

    如果是月份、每日的数据,就更多了。

    换成Descendants()就简单多了:

    select {[Product].[Tools], [Product].[Toys]} on columns,
        Descendants(
            [Time].[YQMD].[Year].[2005],
            [Time].[YQMD].[Quarter],
            self
        )
        on rows
    from sales
    where [Measures].[Dollar Sales]

    从这里可以看出MDX类似于传统编程语言的地方,就是用函数来实现,也就是类似与LINQ的方法语法(Fluent Syntax)。这种Fluent Syntax和传统SQL的查询语法(Query Expression)混杂在一起,就造成了MDX非常复杂、思维难以转换的特点,夸张点说,简直就是反人类啊。

  • 相关阅读:
    文件上传
    大三寒假学习进度笔记Day16
    大三寒假学习进度笔记Day15
    大三寒假学习进度笔记Day14
    大三寒假学习进度笔记Day13
    大三寒假学习进度笔记Day12
    大三寒假学习进度笔记Day11
    大三寒假学习进度笔记Day10
    Java命名规范
    架构漫谈阅读笔记03
  • 原文地址:https://www.cnblogs.com/ifan/p/2839204.html
Copyright © 2011-2022 走看看