zoukankan      html  css  js  c++  java
  • MDX中容易搞混的几个概念

    元组:

    可以直接理解为元素,或者可以理解为EXCEL中的单元格,而这个单元格一般来讲是两个或者两个以上的维度crosstab出来的。
    例如

    select [Measures].[Dollar Sales] on 0
    from sales
    where ([Time].[2004],[Product].[Tools])

    就是统计2004年Tools产品类的数据。
    个人理解的流程是,先把2004年Tools产品类的数据拿出来,配上各种维度(但是不含Time和Product维度了)。
    相当于是提取了整个多维数据的一个子集出来进行统计,而这个子集也是一个多维数据。个人理解这个就是切片的概念。

    Filter()

    select filter(
        [Time].[Year].members, 
        ([Time].[2004], [Measures].[Sales Count])>=10000
    ) on 0,
        [Product].[Category].children on 1
    from sales
    where [Measures].[Sales Count]

    filter第二个参数是个布尔表达式,是(元组)>=value的形式,所以可以是由多个维度组合的元组。
    从([Time].[2004], [Measures].[Sales Count])>=10000也可以更进一步加深理解元组的概念:元组实际上是有多个条件crosstab出来的一个单元格数值。
    ([Time].[2004], [Measures].[Sales Count])是04年全年的sales count
    ([Time].[Q1, 2004], [Measures].[Sales Count])是04年Q1的sales count

    Order()

    select [Time].[Year].members on 0,
        order(
            {[Product].[Category].Members},
            ([Time].[2004], [Measures].[Sales Count]),
            DESC
        ) on 1
    from sales
    where [Measures].[Sales Count]

    Order()第二个参数实际上是一个元组,相当于给第一个参数所指定的集合中增加了一列用于排序的字段,而这个排序字段是用第二个参数指定的元组的公式计算出来的。

  • 相关阅读:
    数据类型之间的转换(int ,str ,bool)
    字符串的操作及其部分格式化
    逻辑运算符
    格式化输出
    @Resource、@Autowired、@Qualifier
    maven环境搭建
    oracle 用户管理
    volatile关键字
    Ajax
    拷贝InputStream
  • 原文地址:https://www.cnblogs.com/ifan/p/2839235.html
Copyright © 2011-2022 走看看