[分享]微软BI专题-BI中的特殊语言——MDX(下)

MDX文件阅读与转换工具使用指南 本文还有配套的精品资源,点击获取 简介:MDX格式是用于存储电子词典数据的文件格式,广泛应用于教育和语言学习领域。MDX打开工具能将MDX文件内容转换为HTML格式,便于阅读、编辑和分享。本文详细介绍了MDX打开工具的使用步骤,包括安装、打开文件、转换、编辑和保存等环节,并强调了版权问题的重要性。理解MDX格式结构和转换技术,如XML和HTML,对于IT专业人士开发自定义工... 阅读详情
  导读:在上期文章中,我们针对MDX语言,从简单的语法要素入手,以进阶的方式,介绍MDX从基础到高级的应用,以及MDX与SQL之间显著的区别。本期文章将继续MDX的高级应用话题,为大家介绍MDX更为广泛的使用途径。

      在SSIS中使用MDX       在处理ETL时,我们有时需要在ETL流程中嵌入MDX语言,这样在数据转换时,就可以从多维数据库中查询出所需要的数据,而且也可以对多维数据库进行修 改、删除等操作。传统的BI项目一般是由OLTP系统建立数据仓库,然后建立多维数据库,最后进行报表展现或数据挖掘。在报表展现时,我们使用MDX对多 维数据库进行查询,以得到结果。那么这种即席查询的结果如何保存起来,甚至进行进一步的数据处理呢?SQL Server 2005 SSIS提供了专门的工具来进行该类操作,不仅可以进行基于多维数据库的数据查询,而且还可以对多维数据集的结构进行修改、对多维数据集的数据进行处理。 下面,我们就SSIS中的这一类操作进行介绍:

     在SQL Server 2005 SSIS中将MDX查询结果转变为表     

1) 建立数据源连接。在建立好SSIS项目后,从数据流组件中拉过OLE DB数据源,在建立连接处选择新建,然后选择Microsoft OLE DB Provider for Analysis Servers 9.0。在服务器名称处键入服务器及其实例名,选择验证方式,在选择多维数据库处选择要使用的多维数据库,这里选择Adventure Works DW。      

2)使用MDX语句。在数据访问模式处, 选择SQL命令,然后键入要查询的MDX语句(如图1),输入: _select { [Date].[Calendar].[Calendar Quarter].&[2003]&[1],  [Date].[Calendar].[Calendar Quarter].&[2003]&[2], [Date].[Calendar].[Calendar Quarter].&[2003]&[3], [Date].[Calendar].[Calendar Quarter].&[2003]&[4] } ON COLUMNS , { [Product].[Product Categories].[Category].&[1].SIBLINGS } ON ROWS  FROM [Sales Summary] WHERE ([Measures].[Sales Amount] )   图1:输入要查询的MDX语句

3)点击预览我们可以看到MDX查询结果的表格。

4) 接下来,我们可以使用Data Conversion Transformation组件,将查询结果中的各列重新命名;也可以使用Conditional Split Transformation组件将第一季度大于100000的销售额选取出来;最终,我们将选取后的结果导入数据库的表格中去。这样,我们便实现了“从 CUBE中读取数据→转化整合→存储到另一个数据表”这样一个过程。图2为我们呈现了实现这一过程的完整SSIS数据流任务。  

图2:完整SSIS数据流任务

在SQL Server 2005 SSIS中使用MDX修改CUBE的结构

1) 选择执行SQL任务组件。我们从控制流工具箱中将SQL任务组件拉入设计区,双击,在连接管理器处选择新建连接,然后从提供程序处选择Microsoft OLE DB Provider for Analysis Servers 9.0,这样我们就连接到了多维数据库上,接下来我们便可以写MDX语句了。

2)在SQL状态处输入要修改CUBE的MDX语句,这样 便可以对CUBE进行更新操作。如图3所示,在这里我们选择直接输入: Alter Cube [Adventure Works]     _update Dimension         [Destination Currency].[Destination Currency],     Default_Member =         [Destination Currency].[Destination Currency].[US Dollar]  

图3:输入要修改CUBE的MDX语句

3)运行后我们可以看到CUBE的结构发生了改变。

在SQL Server 2005 SSIS中使用Analysis Services Execute DDL Task

在SQL Server 2005 SSIS组件中有一个是Analysis Services Execute DDL Task,它里面可以嵌入XML/A文本,在XML/A文本中可以嵌入MDX语句,执行相应的功能。图4所示的内容,向我们简单地介绍了如何使用这个组件 完成对Adventure Works DW多维数据集处理:  

图4:对Adventure Works DW多维数据集的处理

通 过上面三个组件(OLE DB数据源、执行SQL任务、Analysis Services Execute DDL Task)的使用,我们了解了如何在SQL Server 2005 SSIS中应用MDX。从而通过ETL的流程,完成了建立/修改多维数据库、从多维数据集中查询数据、回写回关系型数据库等事务,实现了关系型数据库与多 维数据库之间的交换。

3、MDX脚本

在上期的介绍中,我们了解到通过编写MDX语句可以 建立多种计算成员,方便多维数据集的数据进行实时计算。那么,针对更改多维数据集的操作,我们也会使用MDX脚本来完成。 MDX脚本通常由一个或多个MDX表达式或语句构成,通过这些表达式或语句,我们可以用一系列计算结果来填充多维数据集。打开Analysis Services多维数据库设计器的计算选项卡,我们通常使用的是“窗体视图”结构(如图5),而点击“脚本视图”后(如图6),会发现二者界面大有不 同。  

图5:窗体视图结构  

图6:脚本视图

原 本设计视图化的窗体编辑器变成了脚本编辑器,在脚本窗口中的Calculate命令下,我们就可以编写MDX表达式或语句,来定义多维数据集的计算过程。 相比较来说,窗体编辑器更像是一个向导,它为我们提供了定义某一类数据项(比如:计算成员、命名集)的个性化结构界面;而脚本编辑器则以简单的文本录入界 面,让我们直接输入丰富的MDX语句和函数,完成复杂逻辑的MDX定义与计算。

MDX脚本分类

在Analysis Services当中,MDX脚本分为两类:

默认MDX脚本。在 我们创建多维数据集时,Analysis Services会为我们创建一个默认的MDX脚本,这个脚本将会定义我们整个多维数据集的计算过程。具体来说,在我们创建一个新的多维数据集时,打开计 算选项卡,必然会出现一个单独的Calculate语句,而这条语句就是Analysis Services为我们创建的一个默认MDX脚本。通常这条Calculate语句位于MDX脚本的开始位置,指明了在第一次传递过程中应计算整个多维数 据集。当然,默认MDX脚本中还会包含创建命名集(对应语句为:Create Set)、赋值以及计算成员(对应语句为Create Member)的脚本命名。

用户定义MDX脚本。顾名思义,在创建多维数据集后,我们可以根据业务需求自由添加自定义的MDX脚本,这样既扩展了多维数据集的计算功能,又实现了许多复杂的商务规则。

MDX脚本内容在MDX脚本中,我们可以使用MDX语句,来管理MDX脚本的上下文、作用域以及流控制的操作,在这里我们同样可以使用创建计算成员与命名集的语句来编写脚本。

类型
语句
说明
管理脚本上下文
Calculate
计算子多维数据集,还可以确定子多维数据集中所包含维度的求解次序。
Existing
强制在当前上下文中计算所指定的集合。
Freeze
将所指定子多维数据集的单元值锁定为其当前值。
管理作用域
Scope
把指定 MDX 语句的作用域限制于指定的子多维数据集。
条件语句
If
引用条件逻辑添加到MDX脚本当中,条件为真,执行语句。
Case
根据条件逻辑有条件地从多次比较中返回特定值。

MDX脚本参数

编 写SQL语句时,我们有时根据设计所需使用参数,而在MDX脚本当中,我们也是可以使用参数化语句,而参数的表达方式,也不尽相同,仍以“@”来标识。那 么,在MDX当中,唯一不同的就是,参数设置仅支持文字或标量值,如果要创建引用成员、集合或元组参数时,我们就要使用MDX函数进行转换,如 StrToSet函数(该函数将返回具有多维表达式格式的指定字符串表达式所构建的集合)或StrToMember函数(该函数将返回具有多维表达式格式 的指定字符串表达式中的成员)等等。

小结

我们通过两期专栏,为大家介绍了BI中的特殊语 言——MDX。和SQL语言的功能类似,MDX专门用于创建/修改多维数据结构、查询多维数据结果;然而,与SQL语言相比,MDX又具备更强大的功能: 用于定义更丰富的数据元素,如计算成员、命名集和KPI。我们可以通过多种途径来使用MDX,比如:在ETL流程中嵌入MDX、在AS中使用“计算”和 “KPI”设计器视图编辑MDX、直接创建MDX脚本等等。

NLM去噪算法:原理、优化与医学图像处理实战 本文深入解析NLM去噪算法的核心原理及其在医学图像处理中的优化应用。通过全局自相似性计算,NLM算法有效抑制噪声并保留细节,特别适用于超声图像斑点噪声处理。文章还介绍了积分图像和傅里叶变换等优化技巧,显著提升计算效率,并分享医学影像项目中的实用调参经验。 阅读详情

相关推荐

光栅衍射有入射角时_偏振光栅的衍射角度及衍射效率测量

偏振光栅是一种基于入射光的偏振态实现选择性分光的衍射光学元件,衍射角度取决于光栅线数。通过控制入射光的偏振态,偏振光栅能够调控正一阶和负一阶之间的能量分布。当入射光束偏振态不同时,偏振光栅具有不同的衍射特性。理想的偏振光栅:当入射光为右旋圆偏振光时,只有+1级衍射光,衍射光为左旋圆偏振光。当入射光为左旋圆偏振光时,只有-1级衍射光,衍射光为右旋圆偏振光。当入射光为非圆偏振光时,偏振光栅同...

weixin_39552768的博客 6003

多维聚合实战:从SQL GROUP BY到OLAP立方体的工程落地

多维聚合是BI与数据分析的核心能力,本质是在时间、地理、用户等正交维度构成的高维空间中实现精准切片、钻取与一致性计算。其技术原理根植于OLAP模型——通过预定义维度层次(Hierarchy)、原子化度量(Measure)和上下文感知的成员(Member),支撑动态Roll-up/Slice & Dice操作。相比传统SQL GROUP BY的扁平化降维,多维聚合提供可逆映射与跨层级数据一致性保障,显著提升T+1报表、实时大屏、自助分析等场景的响应效率与业务可信度。本文聚焦生产级落地,涵盖星型模型建模、Kyl

culuo8053的博客 447

Vscode远程免密连接Linux虚拟机,并配置C/C++运行环境

目前想要深入学习在Linux,也为了方便编写C/C++程序。Linux的环境里一般自带有c++的编译环境,如果没有安装gcc和g++等编译器也比较便利。但是在虚拟机里用vim编写C++程序又不得劲,因此打算使用vscode远程连接Linux虚拟机进行学习。为了防止自己以后还要再配置,重复踩坑,因此写下这篇博客用做记录。环境:windows11、VMware17、rocky linux9.1 ( 开源的CentOS9 )

m0_56779872的博客 8677

多维聚合实战:用Pandas+DuckDB构建可下钻的数据立方体

多维聚合是BI分析与OLAP的核心能力,本质是在维度空间中对事实数据进行切片、上卷、下钻等操作,区别于简单GROUP BY的单层分组。其技术基础是星型模型与维度建模,关键价值在于支持稀疏性处理、层级感知和跨维度比率计算。典型应用场景包括销售多维分析、用户行为交叉洞察、实时BI看板与机器学习特征宽表生成。本文聚焦Data Manipulation in Multi-Dimensional Aggregation,详解动态维度切换、空值补全、CUBE/GROUPING SETS高级聚合及增量更新等工程实践,以P

weixin_38166689的博客 484

VN5620硬件接口介绍

VECTOR, VN5620, 诊断

Fecostar的博客 7482

【Anaconda】conda国内镜像源快速配置指南(清华/阿里云)

本文详细介绍了如何为Anaconda配置国内镜像源(清华/阿里云),以显著提升conda包下载速度并减少安装失败率。通过分步指南和实用技巧,帮助开发者快速完成配置,优化Python开发环境。

weixin_33725722的博客 1486

MDX&Mondrian介绍

MDX(Multidimensional Expressions)是多维数据库(OLAP 数据库)的查询语言。 Mondrian是一个开源项目。一个用Java写成的OLAP引擎。它用MDX语言实现查询,从关系数据库(RDBMS)中读取数据。然后经过java API以多维的方式对结果进行展示。它实现了MDX语言、XML解析、JOLAP规范。Mondrian的使用方式同JDBC驱动类似。可以非常方便的与现有的Web项目集成。

迷雾总会解 1222

Ansys Lumerical实战:5步搞定Mach-Zehnder调制器多物理场仿真(附眼图分析技巧)

本文详细介绍了使用Ansys Lumerical进行行波马赫-曾德尔调制器多物理场仿真的完整流程。通过CHARGE、MODE和INTERCONNECT三大模块的协同工作,从电学参数提取、光学射频特性分析到系统级眼图评估,分步解析了高效仿真与性能优化的核心技巧,为硅光调制器设计提供了实战指南。

weixin_29056781的博客 542

常见网络协议汇总(非常详细)从零基础入门到精通,看完这一篇就够了

本篇博客将对基于 计算机网络五层模型 中的常见协议做以总结 ,目的通过这些具体的协议更深刻的认识整体网络的传输流程及相关网络原理。

xx16755498979的博客 5万+

【origin】负载牵引的Smith圆图

export导出为txt,得到的是幅相值,复制到excel如下图,有多根类似格式的线,只需要复制DE列到origin中。回到sheet,发现新增了选中的一组值,就是解释过后的值。笔者没找到把所有线一起画出的方法,只能蠢一点,一组一组画。而且,箭头所指的位置都变成了Y轴(应该要为X轴)以此类推,把之后的曲线都画完,可以汇总到一个图中。显示以下界面,点击右上圆图,选择解释。会生成新的graph,再重新解释一次。选择第二组线,同样画smith圆图。选中第一组线,选smith圆图。复制到origin,如下图。

乾巽的博客 2919

基于AI的智能开发环境—Trae在Web开发中的应用实战与性能评估【Trae项目实战】

Trae 是一款与 AI 深度集成的开发工具,提供智能问答、代码自动补全和基于 Agent 的 AI 自动编程能力,极大提升开发效率。它具备完备的 IDE 功能,如代码编写、项目管理和源代码管理等,同时还具备强大的 AI 助手,能够提供智能问答、实时代码建议、代码片段生成等服务。开发者可以通过自然语言与 AI 协作,从 0 到 1 开发项目,AI 会根据需求自动生成代码或创建文件。

一键难忘的博客 3万+

MDX语言的WebSocket

WebSocket是一种用于双向通信的协议,允许客户端和服务器之间通过一个持久的连接进行交互。与传统的HTTP请求/响应模型不同,WebSocket连接在初次握手后,可实现实时的数据交换,极大地降低了通讯延迟。WebSocket的工作原理初始握手:客户端通过HTTP请求向服务器发起连接请求,服务器确认连接后返回101状态码。数据传输:连接建立后,数据可以在客户端和服务器之间双向流动,数据格式包括文本和二进制。连接关闭:任何一方都可以随时关闭连接。WebSocket的优势。

2501_91241473的博客 396

Open3D 计算点云法向量的夹角【2026最新版】

计算法向量的夹角,博客长期更新,本文最新更新时间为:2026年3月7日。

点云侠的博客 3130

谈一谈多维表达式(MDX)

这是一篇来自msdn上的文章,我把它摘过来了。多维表达式 (MDX) 是一种功能完备、基于语句的脚本语言,用于定义、使用以及从 Microsoft SQL Server 2005 Analysis Services (SSAS) 中的多维对象中检索数据。MDX 提供以下几种语言功能:用于创建、删除以及使用多维对象的数据定义语言 (DDL) 语句。用于从多维对象中检索操作

862

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

BI开发之——Mdx基础语法(1)

  Mdx为MultiDimensional  Expressions的缩写,多维表达式,是标准的OLAP查询语言。在多数OLAPServer都提供Mdx支持,如Microsoft Sql Server OLAP Services,SAS,Hyperion Essbase等。支持多维对象于数据定义和操作。Mdx很多方面与结构化查询语言(SQL)语法相似,但他不是SQL语言的扩展;事实上,Mdx所...

weixin_34247299的博客 731

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

学习C#数据库的操作——使用AdventureWork微软示例库

一、AdventureWork数据库,是Micosoftwore公司提供的一个数据库的示例,是学习使用数据库一个蛮好的例子。 提示:AdventureWork的下载链接 二、编写一个展示AdventureWork的数据的例子 1、使用AdventureWork中的Product表和ProductPhoto,ProductProductPhoto来显示一个自行车的产品展示和详细信息显示的例子。 2、建立例子 (1)、在C#代码中添加数据库的配置的方法:(使用Windows的身份认证方法) (2

water_lwj的专栏 604

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

微软示例数据仓库AdventureWorksDW 与数据仓库概述

AdventureWorksDW 与数据仓库概述 1 AdventureWorksDW 2019简介 AdventureWorks 是SQL Server里的示例数据库。它构建在一家虚拟的大型跨国生产公司,该公司生产金属和复合材料的自行车,产品远销北美、欧洲和亚洲市场。AdventureWorksDW是其数据仓库版,本文主要演示如何还原该示例数据库。 2 数据仓库示例概述 2.1 结构说明 1 参照里的介绍生成AdventureWorksDW2019...

数据科学汇集 3523

MDX语言学习

MDX 概述 ​ 如果我们请教任何一位熟悉关系型数据库的朋友:“在关系型数据库方面,什么是最核心的技术?”那么答案多半是“SQL语言”。同样的道理,在BI领域,可以认为MDX语言是最核心的技术。因为商业智能的一项关键技术是多维数据库,访问多维数据库时使用SQL语言是不适用的,我们需要使用另一种语言:MDX。更深一步讨论,MDX包含两种最主要的用途:SQL语言可以查询和管理关系型数据库。类似的,MDX语言可以查询和管理多维数据库。 Mondrian Pentaho Analysis Services,即Mo

何以问_的博客 2406

MDX语言的计算机基础

MDX是一种多维表达式语言,专为访问和分析多维数据集而设计。它最早由微软提出,通常用于Microsoft SQL Server Analysis Services(SSAS)中的多维数据集。MDX语言的设计旨在处理和查询复杂的数据结构,使得用户能够通过多维视角来分析数据。多维数据模型与传统的关系型数据库模型不同,关系型数据库通常是二维表格形式,而多维数据模型则是通过维度(Dimensions)和度量(Measures)来组织数据。

2401_90086266的博客 488

MDX功能初探

  本文讲述了在分析数据时,利用SQL Server Analysis Service 2005多维数据集的MDX语言可以轻松实现关系数据库T_Sql语句难于实现的功能。       在关系型数据库中存放着基本的、日常的数据,通常使用T_SQL语句来查询想要的数据,但要在海量数据中分析数据出现的规律,挖掘出自己关心的数据,使用T_SQL语句就难于实现了。比如公司领导要实时了解公司运营状

马辉的专栏 1496

SQL Server MDX学习

第一章:MDX入门: 0 ---Columns 1----rows 2----pages 3----Chapters 4----Sections 扩大范围用冒号 select {[Time].[Sep,2014]:[Time].[Sep.2015]} on rows, {[Product].[A]:[Product][B]} on columns from

qq_19268635的博客 1134

MDX基本概念和语法

MDX基本概念和语法1 MDX简介1.1 MDX重要概念1.1.1 维度(Dimensions)、级别(Levels)、成员(Members)和度量值(Measures) 1 MDX简介 MDX(multi-dimensional expressions多维表达式)是一种语法,支持多维对象与数据的定义和操作。 1.1 MDX重要概念 多维表达式 (MDX) 的用途是使对多个维度的数据的访问更为简单和直观。它的主要概念如下: 维度(Dimensions)、级别(Levels)、成员(Members)和度量值

寒沨的博客 6807

继续学习mdx!

成员百分比分析 函数:CurrentMember、Parent等;分析各城市的销售所占全部城市的总销售额百分比。WITH MEMBER Measures.[Unit Sales Percent] AS '((Store.CURRENTMEMBER, Measures.[Unit Sales]) / (Store.CURRENTMEMBER.PARENT, Measures.[Unit...

weixin_30326745的博客 220

微软BI 之SSRS 系列 - 如何在 MDX 查询中获取有效的 MEMBER 成员属性作为参数传递...

这篇小文章的来源是 天善问答,比如在报表中要根据点击某一个成员名称然后作为参数传递给自身报表或者下一张报表,这个在普通的 SQL 查询中没有任何问题。但是在 MDX 中查询是有区别的,比如在 MDX 中显示在报表上的结果是 Category 下的一个分类 Bikes,但是当点击了 Bikes之后把 Bikes 作为参数传递下一个 MDX 查询的报表中,很显然我们要的是参数 [Product].[P...

weixin_34092455的博客 458

多维数据查询OLAP及MDX语言学习整理(转载)

一、OLAP概述 为了满足业务管理和决策的报表系统(包括传统报表、数据仓库、OLAP等)也被创建出来,企业主管通过报表了解企业的总体运行状态。 但是,随着企业间竞争的加剧和市场节奏的进一步加快,企业的日常管理需要对关键业务指标的更加实时的监控和反馈。比如:制造业需要更及时的仓库调度、金融业需要更实时的风险防范、电信业需要更及时的服务指标监控。于是,越来越多的企业提出实时企业的要求,传统的ERP等信息系统和报表系统无法满足这些需求。实时业务监控解决方案旨在更好支撑客户此类需求。 http://www.tuic

樱吹雪 2719

BI 前端实践 8:关联查询语言──DQL

实践目标 通过对比DQL及它翻译出的SQL,初步认识DQL,体会它怎么支持有关联(JOIN)的多维分析。 认识DQL 观察上一节最后一个多维分析例子,前端分析时,DQL服务器上会打印出这样的日志: 能看到提交到DQL服务器的查询语句是DQL,和SQL语法有区别。DQL服务器把它翻译出来成SQL后,才去原始数据库执行获得数据。 原始数据库被DQL服务器包裹起来隐藏掉,并且更换了一种新的查询语言。这样的结构令人产生疑问:为什么多维分析不直接拼成SQL,DQL比起SQL来有什么便利,有什么区别,这就

Raqsoft 2696
上一篇: [分享]微软BI专题-海量数据处理分析
下一篇: [原创]微软BI专题-Reporting Services平台下报表数据筛选的两种方法
jackfor001
博客等级 码龄22年 41粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值