常用MDX计算查询(

MDX语言的数据结构 MDX最初被设计用于Microsoft SQL Server Analysis Services(SSAS),它是一种针对多维数据模型的查询语言。多维数据模型:MDX专为多维数据设计,支持层级、切片、视图等特性。维度与度量:在MDX中,数据通常由维度(Dimension)和度量(Measure)组成,维度用于组织数据的不同角度,而度量则是用于度量的数值。上下文:MDX语言利用上下文来评估表达式的值,比如当前的维度成员选定状态。 阅读详情
常用MDX计算查询 (2009-04-03 16:59:17)

本文来源于《MDX Solutions with Microsoft SQL.Server Analysis Services 2005 and Hyperion Essbase 2nd Edition》一书的内容,主要介绍了一些经常编写的MDX语句的写法。以下MDX语句可以在SSAS的示例库:Adventure Works中运行。

例子模型
以下的MDX中用到的Hierarchy如下:

 

 


百分比
1)某个子项占总体的百分比。比如:每种Product的销售额占所有Product销售额的百分比。

WITH MEMBER [Measures].[Sale Amount Ratio] AS
'[Measures].[Internet Sales Amount]/([Measures].[Internet Sales Amount], [Product].[Product Categories].[All])' , FORMAT_STRING = '0.00%'
SELECT
{[Measures].[Internet Sales Amount], [Measures].[Sale Amount Ratio]} ON 0,
NON EMPTY [Product].[Product Categories].[Product Name].Members ON 1
FROM [Adventure Works]

2)某个子项占其父项的百分比。比如:每种Product的销售额占其所属的SubCategory销售额的百分比。

WITH MEMBER [Measures].[Sale Amount Ratio] AS
'[Measures].[Internet Sales Amount]/
([Measures].[Internet Sales Amount], [Product].[Product Categories].CurrentMember.Parent)'
, FORMAT_STRING = '0.00%'  
SELECT
{[Measures].[Internet Sales Amount], [Measures].[Sale Amount Ratio]} ON 0,
NON EMPTY CROSSJOIN([Product].[Subcategory].[Subcategory].Members,
    [Product].[Product Categories].[Product Name].Members) ON 1
FROM [Adventure Works]
3)某个子项占其祖先的百分比。比如:每种Product的销售额占其所属的Category销售额的百分比。

WITH MEMBER [Measures].[Sale Amount Ratio] AS
'[Measures].[Internet Sales Amount]/
([Measures].[Internet Sales Amount],
ANCESTOR([Product].[Product Categories].CurrentMember, [Product].[Product Categories].[Category]))'
, FORMAT_STRING = '0.00%'  
SELECT
{[Measures].[Internet Sales Amount], [Measures].[Sale Amount Ratio]} ON 0,
NON EMPTY CROSSJOIN([Product].[Category].[Category].Members, [Product].[Product Categories].[Product Name].Members) ON 1
FROM [Adventure Works]
分配、分摊数量
1)根据一个Measure值来分配数量。比如:按照每种Product占总体的销售额多少来分摊成本。

WITH MEMBER [Measures].[Product Cost] AS
'([Measures].[Internet Total Product Cost], [Product].[Product Categories].[All])*
[Measures].[Internet Sales Amount]/
([Measures].[Internet Sales Amount], [Product].[Product Categories].[All])' 
, FORMAT_STRING = '0.00'
SELECT
{[Measures].[Internet Sales Amount], [Measures].[Product Cost]} ON 0,
NON EMPTY [Product].[Product Categories].[Product Name].Members ON 1
FROM [Adventure Works]
2)根据一个Hierarchy来分配数量。比如:在Product Hierarchy中计算每种Category的成本的时候,可以根据每种Category下有多少个产品来进行分配。

WITH MEMBER [Measures].[Product Cost] AS
'([Measures].[Internet Total Product Cost], [Product].[Product Categories].[All])/
Count(
    Descendants (
        [Product].[Product Categories].CurrentMember,
        [Product].[Product Categories].[Product Name],
        SELF
    ),
    INCLUDEEMPTY
)' 
, FORMAT_STRING = '0.00'
SELECT
{[Measures].[Internet Sales Amount], [Measures].[Product Cost]} ON 0,
NON EMPTY [Product].[Product Categories].[Category].Members ON 1
FROM [Adventure Works]
平均值
1)简单平均值。比如:计算一个月中每天平均的销售额是多少。

WITH MEMBER Measures.[Avg Gross Profit Margin] AS
   [Measures].[Internet Sales Amount]/
   COUNT(Descendants([Ship Date].[Fiscal].CurrentMember, [Ship Date].[Fiscal].[Date]), INCLUDEEMPTY)  

SELECT
  {[Measures].[Internet Sales Amount], Measures.[Avg Gross Profit Margin]} ON COLUMNS,
  [Ship Date].[Fiscal].[month].Members ON ROWS
FROM [Adventure Works]
2)加权平均值。没有想到好的例子。

基于时间的计算
1)同比和环比。比如:今年每月的销售额和去年同期相比的变化
参见: http://blog.sina.com.cn/s/blog_4cd36be30100c7ga.html,这里要补充的是,在同比MDX中,采用COUSIN或ParallelPeriod都可以,但是采用ParallelPeriod更好一些。

2)累计到当前的统计。比如:得到一年中每一个月的累计销售额。

WITH MEMBER Measures.[Additive Internet Sales Amount] AS
   SUM(
       PeriodsToDate([Ship Date].[Fiscal].[Fiscal Year],[Ship Date].[Fiscal].CurrentMember),
       [Measures].[Internet Sales Amount]
   )
SELECT
  {[Measures].[Internet Sales Amount], Measures.[Additive Internet Sales Amount]} ON COLUMNS,
  [Ship Date].[Fiscal].[month].Members ON ROWS
FROM [Adventure Works]
3)移动平均值。比如:计算一种Category过去三个月的平均销售额合计。

WITH MEMBER Measures.[Average Internet Sales Amount] AS
   AVG(LastPeriods(3, [Date].[Calendar].CurrentMember),
       [Measures].[Internet Sales Amount])
SELECT
  {[Measures].[Internet Sales Amount], Measures.[Average Internet Sales Amount]} ON COLUMNS,
 NON EMPTY ([Product].[Product Categories].[Category].Members,
    DESCENDANTS([Date].[Calendar].[Calendar Year].&[2002], [Date].[Calendar].[Month], SELF)
  ) ON ROWS
FROM [Adventure Works]

 


总结
MDX的表现力非常强大,以上的一些内容希望起到抛砖引玉的作用。

MDX查询入门:编写与实践 本文还有配套的精品资源,点击获取 简介:MDX是用于OLAP环境中查询多维数据集的专用语言。本文将指导初学者学习如何编写自定义MDX查询,包括理解其基本结构、切片、dice和钻取操作等。通过实例文档和练习文件,你将能够掌握MDX的基础语法和查询技巧。掌握MDX将帮助DBA和架构师优化多维数据模型,提高数据分析能力。 1. 多维表达式(MDX)基础介绍 多维表达式... 阅读详情

相关推荐

多维表达式 (MDX) 参考手册

本手册内容收集整理自网络公共资源文档,为了方便PowerBI用户参考使用而作,请勿用于商业用途。

翻译介绍15个经典的MDX查询-02and03

  02.  所有商店中销售前10名的产品类别有哪些?Listing 2 直接利用TopCount()函数查询销售前10名的产品。(这是一种最直接的方法,TopCount()函数本身自带排序(降序)的功能) LISTING 2: Determining Top 10 Product Categories说明:查询销售前10名的产品类别 select {[Unit Sales]} o

robot1980的专栏 2849

mdx模型转换器导入MAX任意版本插件

mdx模型转换器导入MAX任意版本插件 适合大部分3DMAX使用·

MDX 同环比(最全方案)

1. 当你的时间是时间点(2017-03-01) with member [Measures].[TOTAL_MONEY_环比] as ' (([Measures].[TOTAL_MONEY] / ([Measures].[TOTAL_MONEY], [ADD_T_1].[CAL_DATE].CurrentMember.PrevMember)) - 1)', FORMAT_STRING = ...

qq_36285899的博客 633

TensorRT-LLM环境配置避坑指南:从安装到实战

本文是一份详尽的TensorRT-LLM环境配置避坑指南。文章重点解析了从Python、CUDA、PyTorch版本选择,到解决mpi4py安装这一核心难题的完整流程,并提供了经过验证的稳定版本组合与实战排错方案,帮助开发者高效部署大语言模型推理优化环境。

a0b1c2d3的专栏 983

从学生项目到工程实践:手把手教你用ATE测试电源芯片的Rdson与漏电流

本文详细介绍了如何将学术级的电源芯片测试方案转化为工业级解决方案,重点讲解使用ATE设备测试Rdson(导通电阻)和漏电流的关键技术。从设备选型、测试夹具设计到量产环境下的工程化实现,提供了实用的优化技巧和常见问题解决方案,帮助工程师提升测试效率和精度。

weixin_42525289的博客 180

翻译介绍15个经典的MDX查询-01

15个很具代表性的MDX查询语句。 出处 www.sqlmag.com原文下载 原作者Russ Whitney 。 我只是对其作了翻译(其中括号部分是我的观点),并对每个mdx语句出现的mdx常用函数略作解释。(如翻译有误、理解不够的地方,敬请指正!) 读者请求最多的是更多的MDX信息。他们通常要求更多的M...

weixin_33957648的博客 319

海康视觉通讯配置

本文介绍了海康通讯管理中TCP和Modbus协议的配置方法。TCP通讯时,视觉系统作为服务器接收PLC客户端发送的触发信号,需注意十进制与十六进制字符串的转换。Modbus配置需填写PLC的IP地址和寄存器首地址,并预先定义整型变量。TCP通讯需开启16进制发送模式以避免数据格式问题。文章重点说明了不同通讯方式下的数据格式转换和参数设置要点。

A567852的博客 2243

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

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

樱吹雪 2719

无人机通信安全渗透测试:从信号拦截到GPS欺骗的完整攻防框架

在物联网和智能设备普及的背景下,无线通信安全成为关键基础设施防护的核心环节。其原理在于,通过软件定义无线电等设备对空中的射频信号进行捕获、分析与模拟,从而评估通信协议在加密、认证和防重放等方面的脆弱性。这项技术的价值在于,它能主动发现并修复系统设计缺陷,避免因信号被拦截或欺骗导致设备被劫持、数据泄露等重大安全事件。其应用场景广泛,涵盖消费电子、工业控制及关键基础设施等领域。本文聚焦于无人机这一典型移动物联网终端,深入探讨如何构建一套针对其通信链路的渗透测试方法论,其中涉及信号拦截、协议逆向等关键技术,旨在为

weixin_34128237的博客 390

C++从入门到进阶的系列书籍推荐(22本书)

要多读书,读好书!一本书要多读几遍才好,每次都可能有新的收获!特别在是有一定的工作年限和工作经验之后!读书百遍,其义自见! 下面就给大家推荐一下C++程序员进阶需要读的经典书籍: 1、C++入门书籍 C++是在C语言的基础上发展而来的,要学习C++之前需要先学习C语言。有了C语言基础之后再去学习C++。 1.1、C语言程序设计(谭浩强) 该书被公认为学习C语言程序设计的优秀教材,被全国大多数高校选用,是学习C语言的主流用书。本书比较通俗易懂,是初入者必备的书籍。 ........

dvlinker的技术专栏 4万+

MDX语言的计算机基础

在开始MDX的学习之前,我们需要了解一些基本概念。MDX是一种以多维数据为基础的查询语言,而多维数据集是OLAP的核心。OLAP多维数据模型允许我们从多个维度分析数据。例如,在销售分析的应用中,我们可能会从“时间”、“地区”和“产品”这三个维度来对销售数据进行分析。

2501_90184312的博客 848

工业4.0必备:C#上位机+数字孪生 生产线实时监控与智能预警系统(工业级实战)

数据割裂:PLC、传感器、工业相机的数据散落在不同系统,想看全局生产状态要切换N个软件,“数据孤岛”导致决策滞后;故障难预判:设备突发故障时,只能停机排查,平均故障响应时间超30分钟,一条生产线停工1小时损失超10万;可视化差:传统监控只有冰冷的数字和2D图表,设备运行状态、生产流程、物料流转无法直观感知,新人上手需3个月才能熟悉产线。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 658

MDX语言的语法

MDX(Multidimensional Expressions,多维表达式)是一种用于查询和操作多维数据的计算语言。它通常与OLAP(Online Analytical Processing,联机分析处理)数据库结合使用,主要用于从多维数据集中检索数据。在现代数据分析应用中,MDX语言因其高效、灵活而受到广泛欢迎。MDX与SQL(结构化查询语言)不同,后者主要用于关系型数据库的操作。MDX的设计初衷是为了简化多维数据的查询过程,使得用户能够更直观地获取和分析数据。

2501_90406373的博客 533

使用字体解密技术爬取懂车帝二手车数据

本文介绍了一种针对懂车帝二手车平台的字体加密数据采集方案。通过抓包分析,识别出关键API接口并解析了字体加密机制,成功实现了价格等敏感数据的解密。方案采用requests库发送POST请求获取JSON数据,利用fontTools解析字体映射关系,建立加密字符到真实数字的转换算法。程序支持多页采集,提取车辆名称、价格、年份等12个维度的信息,并自动保存为Excel格式。技术亮点包括动态字体解析、健壮的数据处理和分页优化,为二手车市场分析提供了可靠的数据支持。文中特别强调数据采集的合法合规性,建议仅用于学术研究

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1310

YOLOv8性能突破:DySample超轻量动态上采样算子的创新应用与实现【附保姆级代码】

YOLOv8(You Only Look Once Version 8)作为YOLO系列模型的最新版本,延续了高效、准确的目标检测优势。其基础结构包含了骨干网络(Backbone)、检测头(Head)、以及特征融合层(Neck)。在特征融合阶段,YOLOv8需要对不同尺度的特征图进行上采样,以便将低分辨率的特征与高分辨率的特征进行融合。传统的上采样操作多使用插值(如双线性插值)或固定卷积,而这些方法可能无法很好地适应复杂的上下文信息。

一键难忘的博客 3120

MySQL导入mdx_一个简单的MDX案例及说明 (转)

本文以一个简单的MDX查询开始,分别解析这个查询的各个部分,以此来学习MDX语法。但是在这之前首先要介绍使用的案例多维数据集。一.案例所使用的多维数据集维度:图一:维度信息度量值:图二:度量信息其中Max Units Ordered和Total Units Ordered两个度量是导出度量,即通过命名计算得到的度量。维度结构:图三:Product维度结构图四:Store维度结构图五:Time By...

weixin_29300931的博客 791

温度PID控制PLC程序

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

MDX语言的测试开发

MDX语言是一种用于从多维数据集中查询和计算数据的语言。与传统的SQL语言不同,MDX主要用于处理多维数据模型。MDX语言能够有效地从复杂的关系数据中提取出有价值的信息,并支持对数据进行动态分析。

2501_90485642的博客 508

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

MDX多维查询

MDX Created 星期一 24 十月 2016 MDX(Multidimensional Expressions)是多维 数据库(OLAP 数据库)的查询语言.Mondrian 会解析MDX,转换成SQL 来查询关系数据库(可能是多条查询)。MDX 的内容很多,功能强大,这里只介绍最基础和最重要的部分。 1 基本语法 以下是里两条MDX 查询语句及其查询结果ð 语句1:SELEC

小小懒羊羊 7273

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

基本 MDX 查询 ( MDX 语法 教程 )

基本多维表达式 (MDX) 查询以与下面的示例类似的方式进行构造:SELECT [ [, ...]] FROM [][WHERE []]基本 MDX 语法——SELECT 语句在 MDX 中,SELECT 语句用于指定包含多维数据的子集的数据集。为讨论 MDX SELECT 语句的各种语法元素,本主题提出一个基本 MDX 查询示例并将其分解为本身的各种语法

7870

MDX语言的云计算

MDX语言最早由Microsoft提出,专为多维数据库设计。MDX语言能够简洁清晰地查询和处理多维数据,广泛应用于OLAP(在线分析处理)系统中。由于其强大的查询能力和灵活性,MDX逐渐成为商业智能(BI)工具中的核心组成部分。

2501_90394902的博客 1846
上一篇: MDX 几个比率问题 原创
下一篇: MDX 边界情况处理
jackfor001
博客等级 码龄22年 41粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值