MDX语句的特点:

大小写不分。members等于Members;downloads等于Downloads

维度的统计量指定要选择准确。downloads等于[Downloads]

[]可以少,不能多。members外部不能有[],否则报错

TopCount函数格式。

members是属性中所有成员的枚举。

同一维度下的属性组合,用Hierarchize:

SELECT

NON EMPTY {[Measures].[Downloads]} ON COLUMNS,

NON EMPTY {Hierarchize({{[appTag.default].[dimstore].Members}, {[appTag.default].[Class].Members}})} ON ROWS

FROM [aso]

不同维度的属性组合,用CrossJoin:

SELECT

NON EMPTY {[Measures].[Downloads]} ON COLUMNS,

NON EMPTY CrossJoin([dimInterval.default].[Interval].Members, CrossJoin([dimStoreName.default].[storeName].Members, [dimDate.default].[year].Members)) ON ROWS

FROM [aso]

举几个具体的例子:

下面两个语句是一样的:

1.SELECT

NON EMPTY {downloads} ON COLUMNS,

TopCount([dimStoreName].[storeName].members,2,[downloads]) ON ROWS

FROM [aso]

2.SELECT

downloads ON COLUMNS,

{TopCount([dimStoreName].[storeName].members,2,[measures].[downloads])}ON ROWS

FROM [aso]

aso是一个cube,总体。如果需要在结果集中筛选出某个属性取特定值的结果,用where 子句

略(有空再写)

查看downloads的top 15:前15计算函数topcount(set,topK,依据统计量),排序后取前15

SELECT

NON EMPTY {downloads} ON COLUMNS,

TopCount([dimApp].[appName].members,15,[downloads]) ON ROWS

FROM [aso]

如果查询跨越来两个不同维度,需要crossjoin,

SELECT

NON EMPTY {downloads} ON COLUMNS,

TopCount(

          CrossJoin([dimStoreName.default].[storeName].Members,[dimApp].[appName].members),15,[downloads]

  ) ON ROWS

FROM [aso]

先交叉,确定查询结果集(交叉连接),再筛选

不能先统计,后交叉,错误:

SELECT

NON EMPTY {downloads} ON COLUMNS,

CrossJoin([dimStoreName.default].[storeName].Members,

          (topcount([dimApp].[appName].members,15,[downloads]))

    )

ON ROWS

FROM [aso]

top5实例进阶:

SELECT

{[downloads]} ON COLUMNS,

Generate(

TopCount([dimStore].[store_name].Members, 5, [downloads]),

{ [dimStore].CurrentMember } * TopCount( [appName].[AppName].Members, 5, ([downloads],[dimStore].CurrentMember) )

) on ROWS

FROM [ASO]

标准格式的例子,猜猜什么意思:

SELECT

NON EMPTY {[Measures].[Downloads], [Measures].[AppCount]} ON COLUMNS,

NON EMPTY Hierarchize(

    Union( CrossJoin({[appTag.default].[anzhi]}, [dimDate.default].[year].Members),

        Union( CrossJoin({[appTag.default].[anzhi]}, [dimDate.default].[day].Members),

            Union( CrossJoin({[appTag.default].[hiapk]}, [dimDate.default].[year].Members),

                   CrossJoin({[appTag.default].[hiapk]}, [dimDate.default].[day].Members)

            )

      )

 )

) ON ROWS

FROM [aso]

骂娘了吗?

解析一下,简化的例子:

SELECT

NON EMPTY {[Measures].[Downloads]} ON COLUMNS,

NON EMPTY Hierarchize(

               Union(CrossJoin([dimDate.default].[year].Members, [appTag.default].[dimstore].Members),

             Union(CrossJoin([dimDate.default].[month].Members, [appTag.default].[dimstore].Members),

             CrossJoin([dimDate.default].[day].Members, [appTag.default].[dimstore].Members)

       )

     )

     ) ON ROWS

FROM [aso]

执行结果如下:

如果只是date维度的下的月日年,很简单,Hierarchize就可以了,如

SELECT

NON EMPTY {[Measures].[Downloads]} ON COLUMNS,

NON EMPTY {Hierarchize({{[dimDate.default].[year].Members}, {[dimDate.default].[month].Members}, {[dimDate.default].[day].Members}})} ON ROWS

FROM [aso]

但是当两个维度下的多个维度组合在一起,就要进行笛卡映射,分别crossjoin,在总体合并。两个维度属性集,分别crossjoin,然后再将所有crossjoin结果集进行union。

union就是并集(合并两个结果集)。

intersect是交集

MDX的实例讲解(排名前15的小例子)的更多相关文章

  1. 2017年排名前15的数据科学python库

    2017年排名前15的数据科学python库 2017-05-22 Python程序员 Python程序员 Python程序员 微信号 pythonbuluo 功能介绍 最专业的Python社区,有每 ...

  2. Html代码seo优化最佳布局实例讲解

    搜索引擎对html代码是非常优化的,所以html的优化是做好推广的第一步.一个符合seo规则的代码大体如下界面所示. 1.<!–木庄网络博客–> 这个东西是些页面注释的,可以在这里加我的& ...

  3. 如何做到机器学习竞赛Kaggle排名前2%

    原创文章,同步首发自作者个人博客 .转载请务必在文章开头显眼处注明出处 摘要 本文详述了如何通过数据预览,探索式数据分析,缺失数据填补,删除关联特征以及派生新特征等方法,在Kaggle的Titanic ...

  4. TCP入门与实例讲解

    内容简介 TCP是TCP/IP协议栈的核心组成之一,对开发者来说,学习.掌握TCP非常重要. 本文主要内容包括:什么是TCP,为什么要学习TCP,TCP协议格式,通过实例讲解TCP的生命周期(建立连接 ...

  5. [转]Scrapy简单入门及实例讲解

    Scrapy简单入门及实例讲解 中文文档:   http://scrapy-chs.readthedocs.io/zh_CN/0.24/ Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用 ...

  6. 【转】GitHub 排名前 100 的安卓、iOS项目简介

    GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...

  7. S3C2440上RTC时钟驱动开发实例讲解(转载)

    嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤.一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便.如有错误之处,谢请指正. 共享资源,欢迎转载:http:/ ...

  8. GitHub 上排名前 100 的 Objective-C 项目简介

    主要对当前 GitHub 排名前 100 的项目做一个简单的简介, 方便初学者快速了解到当前 Objective-C 在 GitHub 的情况.   项目名称 项目信息 1. AFNetworking ...

  9. 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)

    排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...

随机推荐

  1. TV Metro界面(仿泰捷视频TV版)源码解析

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52822499 前言:上一篇介绍了 ...

  2. Linux 环境下的一些常用命令(三)

    转载自 http://www.oschina.net/translate/20-advanced-commands-for-middle-level-linux-users 21. 命令: Find ...

  3. ORACLE异常(整理网上资料)

    一.oracle预定义异常 命名的系统异常 产生原因 Oracle Error SQLCODE Value ACCESS_INTO_NULL 未定义对象 ORA-06530  -6530 CASE_N ...

  4. Cocos2d-x 添加iOS7默认分享/AirDrop

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=530 下午添加分享的时候,看着这 ...

  5. Hibernate 缓存机制全面讲解

    简介 为了降低应用程序访问我们的数据的时候的频率,提高数据读取的速率.比如计算机中为了缓解CPU和内存之间速度差异而引入的缓存是一样的道理.Hibernate同样对缓存进行了支持,使得程序的运行效率得 ...

  6. JSP自定义简单标签入门之带有属性

    上面写的那个简单标签来控制页面中标签内容的重复次数是固定的,这就是权限"写死了",这是非常不好的行为,因为其灵活性太差.所以下面就介绍一种使用属性来控制标签内容输出次数的方法. 准 ...

  7. UNIX环境高级编程——网络编程常用函数及结构

    IP地址的转换 #include <arpa/inet.h>  int inet_aton(const char *strptr,                     struct i ...

  8. [GitHub]第八讲:GitHub Pages

    Github Pages 是 github 公司提供的免费的静态网站托管服务,用起来方便而且功能强大,不仅没有空间限制,还可以绑定自己的域名.在 https://pages.github.com/ 首 ...

  9. 【shell脚本】ftp自动上传mysql备份文件

    上一篇中 mysql每日备份shell脚本 给出了使用mysqldump备份到本地的脚本,接着下面是利用ftp把备份文件传输到远程服务器的脚本. 当然也可以用scp,rsync等等方案. #!/bin ...

  10. pig代码格式上小注意

    1,%default file test.txt 中不要用引号,'' 和""都不行.'file'不会被识别 2,pig判断相等,用==,不是一个=.. 3,pig中只用单引号,不用 ...