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

  • 相关阅读:
    (转)CentOS 和 Ubuntu 下的网络配置
    love 的Python 表示
    python mysqlLdb ImportError: DLL load failed: 找不到指定的模块
    elasticsearch7.11.1安装及使用小记
    python多进程代码示例
    在c++项目中使用高性能的rapidjson作为json处理库
    使用kenlm进行文本纠错
    供應商主檔建立流程
    SAP系統自帶范例
    内部订单作业流程
  • 原文地址:https://www.cnblogs.com/ifan/p/2839235.html
Copyright © 2011-2022 走看看