MDX 如何 翻译 转换 为 SQL 脚本

arthuryan 2008-10-28 03:14:56
加精
如题 ,或者相关sql,mdx 转换翻译的 解决方案 和 思路
...全文
1873 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcuandy 2011-04-10
  • 打赏
  • 举报
回复
理论上是可行的。实际上确实复杂。
JBean 2008-11-14
  • 打赏
  • 举报
回复
抱歉,我是测试一些结帖后的帖子是否可以回复.
wufengerguo 2008-11-05
  • 打赏
  • 举报
回复
kan
哥本哈士奇 2008-11-04
  • 打赏
  • 举报
回复
一个是平面的,一个是立体的,逻辑上不大可行啊.
除非你要取的只是一个切面,那么转换成平面的没有问题.
pxboy 2008-11-04
  • 打赏
  • 举报
回复
立体->立方体,切面->切块
pxboy 2008-11-04
  • 打赏
  • 举报
回复
逻辑上,立体也是由一个一个切面组成的,理论上,每个切面都是一个SQL查询,立体就是由多个查询组成的,这是一个分解的过程,也是一个查询结果合并的过程,只是这些查询可能比较多,但是一定可以完成的,没有经历过的人比较难理解。
lhl_161123 2008-11-04
  • 打赏
  • 举报
回复
好好学习~~一下
华芸智森 2008-11-03
  • 打赏
  • 举报
回复
主要回复:Mr_JBean
Lingzd 2008-10-29
  • 打赏
  • 举报
回复
ding ding ding ding
华芸智森 2008-10-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Mr_JBean 的回复:]
对于Rolap,全部是mdx->sql->dbms,如microsoft rolap,mondrian,etc;
最直接的查看方式是,打开mondrian的log,或ssas(rolap)查询时对sql Server执行sql profile,都可以看见对应mdx查询的sql语句组;
对于Molap,不互译,因为mdx->hash store;

如果关心SQL -> MDX转换,则可以看看jdbc4olap,它里面有一个sql到mdx的转换器,实现的还过得去.(http://www.jdbc4olap.org/)
[/Quote]
受Mr_JBean的启发,我提供一个方案:
你建立一个ROLAP,然后写相关的MDX,再跟踪SQLSERVER,看看发送了哪些SQL语句. :)
华芸智森 2008-10-28
  • 打赏
  • 举报
回复
哥们,我并没有挑战的意思.你01年就做OLAP了,可能我们年纪差不多,但在OLAP这方面,你可以说是我的前辈了.哈哈.

如果单纯的实现
SELECT { {SET} * {SET} * { SET } } ON 0
{ {SET} * {SET} } ON 1
FROM CUBE

这个是没有困难的,这个我曾写过.我楼上贴出的例子也是实现这个的.
在纯的存储过程下实现也可以.在我的下载里也有一个例了.但是MDX是变化万千的,MDX的函数那么多,真的要模拟出来,我看与实现了一个ROLAP的工作量差不多.所以,我才说不可能.
在 OLAP解决方案创建多维信息系统 这本书中提到一个LC模型,我看参考这个开源的模型更有意义.( 当然,我没有看过这个模型,我担心自己看不懂. )

华芸智森 2008-10-28
  • 打赏
  • 举报
回复
微软的那个文章我大体看了一下,由于E文不是很好.只是大体连看带猜.
觉得转化在理论上是 MDX2SQL 是可行的,但对于技术细节难度来说,感觉还是比较困难的.
呵呵...
JBean 2008-10-28
  • 打赏
  • 举报
回复
好吧,很久没搞这么细节了,近期抽空作个
SELECT { {SET} * {SET} * { SET } } ON 0
{ {SET} * {SET} } ON 1
FROM CUBE
的sql示例吧,仅限于对应这个mdx的sql。
谁想先作,就看看微软那篇文章。我们自己的处理,抱歉不好说。


楼上哥们,sql转mdx看看我说的那个,已经有相当基础。
pxboy 2008-10-28
  • 打赏
  • 举报
回复
只要符合语法,MDX转SQL是可以的,我曾实现过一个ROLAP的OLAP服务器,每次前端查询都是最终转换成SQL查询来做的,理论上,MDX查询可以分解成多个SQL查询,就是按维度层次做迪卡尔积,维度每层次成员做聚合,实践中,没有支持MDX,MDX只是多了一个语法分析罢。比如当前查询时间*地区,时间上有年月,地区有国家省份,则分为四个查询,年*国家,年*省份,月*国家,月*省份,如果有All的就是3*3一共9个查询,因为All也是作为一个Level的。

SQL转MDX没有想过。
华芸智森 2008-10-28
  • 打赏
  • 举报
回复
这基本是不可能的.楼上的,如果可能,你给我个例子看看?
随便一条.
SELECT { {SET} * {SET} * { SET } } ON 0
{ {SET} * {SET} } ON 1
FROM CUBE
你转转看?
曾写过一个模拟的过程,但也必须与前台结合才可以显示成类似的格式.
http://d.download.csdn.net/down/709167/MSTOP
JBean 2008-10-28
  • 打赏
  • 举报
回复
mdx到sql的转换,我们01年都做过了:mdx->自己定义的Olap描述对象粘合->多组sql(group为主).
如果是纯sql,则需用存储过程的方式承接多组sql之间的临时结果的利用与处理.
JBean 2008-10-28
  • 打赏
  • 举报
回复
对于Rolap,全部是mdx->sql->dbms,如microsoft rolap,mondrian,etc;
最直接的查看方式是,打开mondrian的log,或ssas(rolap)查询时对sql Server执行sql profile,都可以看见对应mdx查询的sql语句组;
对于Molap,不互译,因为mdx->hash store;

如果关心SQL -> MDX转换,则可以看看jdbc4olap,它里面有一个sql到mdx的转换器,实现的还过得去.(http://www.jdbc4olap.org/)


华芸智森 2008-10-28
  • 打赏
  • 举报
回复
两者根本不可能互译的.
JBean 2008-10-28
  • 打赏
  • 举报
回复
或分析Mondrian源码.
如需理论思路,查找sql Grouping实现olap相关论文
JBean 2008-10-28
  • 打赏
  • 举报
回复
看看微软的文档即可,本地如果安装msdn教全也有:
地址: http://msdn.microsoft.com/en-us/library/ms719711(VS.85).aspx

Mapping MDX to SQL Statements

The mappings described in this section assume that the cube is stored as a set of tables in an SQL schema. A precise specification of the mappings requires a correspondingly precise specification of the structure of the tables that constitute a cube. One such representation is detailed here, but there are many possible ways in which a cube can be represented as a set of tables. Discussion of which particular representation is the most efficient is beyond the scope of this section. If the representations differ, it is not difficult to alter mappings to accommodate the differences.


7,388

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 数据仓库
社区管理员
  • 数据仓库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧