使用MDX实现多维关联分析

在经过了痛苦的数据仓库与OLAP基础知识学习之后,在老板的声声催促下,小心翼翼地创建了数据仓库,设计了通用分析型的OLAP分析界面。

于是心中暗喜“哈哈,可以交差了。”,因为按照《需求说明书》里列出的功能项,均已实现。拿着这个产品来到客户方演示之后,客户连说

了几个“No”(怎么能这样呢,一点面子都不给?好歹我从一个数据仓库的文盲到做出这个产品也花费了不少的时间呀)。接下来,客户提出

了几个要求,要对数据进行智能分析,具体的要求可能就像诸位曾经经历或正在经历的一样吧。好吧,就让我试试去做智能分析。
首先,我们来完成关联分析。对了,我记得数据挖掘原理中介绍了关联分析,经过一段时间的苦读与试验,这个购物篮的例子还是没有带给我

多少启发?我用的是AS,里面只有两个数据挖掘算法呀:决策树与聚类。我不太清楚这两个算法与关联分析如何联系在一起。接下来的几日,

我就在查找与阅读数据挖掘及关联分析中渡过(有点浪费时间吧,不过老板不愿意花钱请一个老手来做这个项目,没有办法,只有摸着石头过

河了)。这天,我痛苦得终于放下数据挖掘方面的书籍,重新打开AS帮助文档,一边阅读着MDX部分,一边在自制的MDX查询分析器里做着试验

。突然灵机一动,为什么不试试用MDX来实现分析呢?说干就干,一番试验下来之后,嘿嘿,还真成功了。下面说是我的成功步骤:
还是先说说数据仓库的结构吧:
SampleCube
--Dim1
----Dim1Hier1
------Dim1Lev1
------Dim1Lev2
------...
----Dim1Hier2
--Dim2
----Dim2Hier1
-------Dim2Lev1
-------Dim2Lev2
----Dim2Hier2
...
--measures
----Sum1
接下来,定义关联分析中的支持度--可信度指标;用MDX的with子句来实现
要实现Dim1.Dim1Lev1与Dim2.Dim2Lev1的关联分析,定义如下:
with
  member [measures].[Dim1Lev1Sup] as '([Dim1].[Dim1Hier1].[Dim1Lev1].CurrentMember, [Dim2].[Dim2Hier1].[所有 Dim2],

[Sum1])/([Dim1].[Dim1Hier1].[所有 Dim1], [Dim2].[Dim2Hier1].[所有 Dim2],[sum1])'
  member [measures].[Dim2Lev1Sup] as '([Dim2].[Dim2Hier1].[Dim2Lev1].CurrentMember,[Dim1].[Dim1Hier1].[所有

Dim1],[Sum1])/([Dim2].[Dim2Hier1].[所有 Dim2], [Dim1].[Dim1Hier1].[所有 Dim1], [Sum1])'
  member [measures].[置信度] as '([Dim1].[Dim1Hier1].[Dim1Lev1].CurrentMember,

[Dim2].[Dim2Hier1].[Dim2Lev1].CurrentMember,[Sum1])/([Dim1].[Dim1Hier1].[所有 Dim1], [Dim2].[Dim2Hier1].[所有 Dim2], [Sum1])'
然后用select语句实现分析,设Dim1Lev1Sup的最小支持度为5%,Dim2Lev1Sup的最小支持度为1%,实现强关联分析(即置信度大于1).
select {[measures].[Sum1],[置信度], [measures].[Dim1Hier1Sup], [measures].[Dim2Hier1Sup]} on columns, 

order(filter({[Dim1].[Dim1Hier1].[Dim1Lev1].Members * [Dim2].[Dim2Hier1].[Dim2Lev1].Members},[measures].[Dim1Lev1Sup] > 0.05

and [measures].[Dim2Lev1Sup] > 0.01 and ([置信度]/([measures].[Dim1Lev1Sup]* [measures].[Dim2Lev1Sup]) >  1)), [Sum1], bdesc)

on rows from SampleCube

这样强关联分析算法就实现了。
以上为个人心得,如有更好的实现方法,请回复告之。

MDX 中的重要概念 使用成员、元组和集 (MDX) MDX 语法元素 标识符 表达式 使用多维数据集表达式和子多维数据集表达式 使用维度表达式 使用成员表达式 使用元组表达式 使用集表达式 使用标量表达式 使用空值 运算符(MDX 语法) 算术运算符 位运算符 比较运算符 串联运算符 集运算符 一元运算符 赋值运算符 函数(MDX 语法) 使用字符串函数 使用数学函数 使用逻辑函数 使用成员函数 使用元组函数 使用集函数 使用维度函数、层次结构函数和级别函数 使用存储过程 (MDX) 注释(MDX 语法) 保留关键字(MDX 语法) MDX 查询基础知识 基本 MDX 查询 EXISTING 关键字 用查询轴和切片器轴限定查询 指定查询轴的内容 指定切片器轴的内容 在简单示例中使用查询轴和切片器轴 在查询中建立多维数据集上下文 在 MDX 中生成子多维数据集 在 MDX 中生成命名集 创建查询作用域的命名集 创建会话作用域的命名集 在 MDX 中生成计算成员 在 MDX 中生成单元计算 创建和使用属性值 操作数据 修改数据 使用变量和参数 MDX 脚本编写基础知识 基本 MDX 脚本 管理作用域和上下文 错误处理 支持的 MDX MDX 语言参考 MDX 语法约定 MDX 语句参考 MDX 脚本编写语句 MDX 数据定义语句 MDX 数据操作语句 MDX 运算符参考 --(注释) -(排除) -(负) -(减) *(叉积) *(乘) /(除) ^(幂) /*...*/(注释) //(注释) :(范围) +(加) +(正) +(字符串串联) +(联合) <(小于) <=(小于或等于) (不等于) =(等于) >(大于) >=(大于或等于) AND IS NOT OR XOR MDX 函数参考 AddCalculatedMembers Aggregate AllMembers Ancestor Ancestors Ascendants Avg Axis BottomCount BottomPercent BottomSum CalculationCurrentPass CalculationPassValue Children ClosingPeriod CoalesceEmpty Correlation Count(维度) Count(层次结构级别) Count(集) Count(元组) Cousin Covariance CovarianceN Crossjoin Current CurrentMember CurrentOrdinal CustomData DataMember DefaultMember Descendants Dimension Dimensions Distinct DistinctCount DrilldownLevel DrilldownLevelBottom DrilldownLevelTop DrilldownMember DrilldownMemberBottom DrilldownMemberTop DrillupLevel DrillupMember Error Except Exists Extract Filter FirstChild FirstSibling Generate Head Hierarchize Hierarchy IIf Intersect IsAncestor IsEmpty IsGeneration IsLeaf IsSibling Item(成员) Item(元组) KPIGoal KPIStatus KPITrend KPIWeight KPICurrentTimeMember KPIValue Lag LastChild LastPeriods LastSibling Lead Leaves Level Levels LinkMember LinRegIntercept LinRegPoint LinRegR2 LinRegSlope LinRegVariance LookupCube Max MeasureGroupMeasures Median Members(集) Members(字符串) MemberToStr MemberValue Min Mtd Name NameToSet NextMember NonEmpty NonEmptyCrossjoin OpeningPeriod Order Ordinal ParallelPeriod Parent PeriodsToDate Predict PrevMember Properties Qtd Rank RollupChildren Root SetToArray SetToStr Sib
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱编程的老五

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值