MDX的实例讲解(排名前15的小例子)
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的小例子)的更多相关文章
- 2017年排名前15的数据科学python库
2017年排名前15的数据科学python库 2017-05-22 Python程序员 Python程序员 Python程序员 微信号 pythonbuluo 功能介绍 最专业的Python社区,有每 ...
- Html代码seo优化最佳布局实例讲解
搜索引擎对html代码是非常优化的,所以html的优化是做好推广的第一步.一个符合seo规则的代码大体如下界面所示. 1.<!–木庄网络博客–> 这个东西是些页面注释的,可以在这里加我的& ...
- 如何做到机器学习竞赛Kaggle排名前2%
原创文章,同步首发自作者个人博客 .转载请务必在文章开头显眼处注明出处 摘要 本文详述了如何通过数据预览,探索式数据分析,缺失数据填补,删除关联特征以及派生新特征等方法,在Kaggle的Titanic ...
- TCP入门与实例讲解
内容简介 TCP是TCP/IP协议栈的核心组成之一,对开发者来说,学习.掌握TCP非常重要. 本文主要内容包括:什么是TCP,为什么要学习TCP,TCP协议格式,通过实例讲解TCP的生命周期(建立连接 ...
- [转]Scrapy简单入门及实例讲解
Scrapy简单入门及实例讲解 中文文档: http://scrapy-chs.readthedocs.io/zh_CN/0.24/ Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用 ...
- 【转】GitHub 排名前 100 的安卓、iOS项目简介
GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...
- S3C2440上RTC时钟驱动开发实例讲解(转载)
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤.一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便.如有错误之处,谢请指正. 共享资源,欢迎转载:http:/ ...
- GitHub 上排名前 100 的 Objective-C 项目简介
主要对当前 GitHub 排名前 100 的项目做一个简单的简介, 方便初学者快速了解到当前 Objective-C 在 GitHub 的情况. 项目名称 项目信息 1. AFNetworking ...
- 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)
排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...
随机推荐
- [Vim]新建python文件自动添加python header
使用vim脚本来实现的,使用了模板,几行代码就能实现很实用. ~/.vimrc 中的代码 "auto add pyhton header --start autocmd BufNewFile ...
- Android JavascriptBridge 详解(二)
原文出自:http://blog.csdn.net/sk719887916/article/details/47189607 Android开发目前现状来说,开发者大部分时间花在UI的屏幕适配上,使用 ...
- Microsoft Dynamics CRM2011 更换Logo
之前操作过但没做过记录,这里记录下以防以后有需要时记不起来还有迹可循 IE收藏栏的图标,在网站根目录下的的/favicon.ico CRM网页中的Logo,替换/_imgs/crmmastheadlo ...
- Unity插件 - MeshEditor(五) 网格顶点动画(变形动画)
源码已上传至github,并持续更新,链接请看底部.(本帖跟随github持续更新) 网格顶点动画(变形动画)是针对于物体的形状可以随意变换并记录为关键帧的动画,虽然模型的顶点数据还是应该交给GPU绘 ...
- Swift基础用法(Swift开发之一)
昨晚苹果发布了新一代编程语言Swift,官方提供了一个iBook的说明文档,有需要的可以看下.地址:https://itunes.apple.com/cn/book/swift-programming ...
- (NO.00004)iOS实现打砖块游戏(四):砖块类的实现
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 用Xcode打开之前SpriteBuilder创建的项目,我们现 ...
- Android进阶(六)文件读操作
Android中文件的读写操作与Java中文件的读写操作是有区别的.在Java中,读文件操作如以下代码所示: public class FileRead { private static final ...
- 【一天一道LeetCode】#108. Convert Sorted Array to Binary Search Tree
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...
- 【Unity Tips】备忘录(扫盲篇)
写在前面 Unity3D虽然是个非常方便的游戏引擎,但还是有一些地方会产生一些让人莫名其妙的问题,而且debug半天也不知道到底哪里错了.往往在经过了大量的log之后,也许我们才顿悟,原来Unity内 ...
- 学习TensorFlow,邂逅MNIST数据集
如果说"Hello Word!"是程序员的第一个程序,那么MNIST数据集,毫无疑问是机器学习者第一个训练的数据集,本文将使用Google公布的TensorFLow来学习训练MNI ...