`
- 浏览:
621596 次
- 性别:
- 来自:
上海
-
一个关于查询动态时间的MDX语句
目的分析:在特定的查询展示环境下,如要利用BSM发布KPI指标的信息,由于登陆门户时需要每天实时的数据信息,但是又不需要另外开发程序来辅助生成,只能通过MDX语句来查询,通过查找mdx中的函数,没有找到可以动态去时间的相关函数。在MDX里也不能像t-sql那样使用DECLARE语句来声明变量,需要使用WITH来定义一个计算成员。第一行便是声明了一个mydate的计算成员。注意在MDX里的变量和标量和在SQL里一样,是弱类型的。但当你声明一个字符串的变量的话应该用双引号扩住,而不是单引号,而你要声明一个日期型的变量的话不用引号,比如声明一个表示2007年8月的日期型变量用“WITH MEMBER mydate as 200708”就可以了。
MDX里可以把一个字符串表达式转换成一个成员或者集的引用,StrToMember函数用来完成讲字符串转换成成员,然后这个字符串你可以用报表参数或者内部计算成员等来拼接而成,从而达到动态查询的效果。MDX里并没有很多的日期和文本处理函数,但它却可以用大部分的VBS函数和EXCEL表达式,实际上是调用的Micrisoft.VisualBasic命名空间下的相关类,以及其它的一些对象。比如在MDX里获取当前时间,就不能用getdate(),而用now()或者date()。而dateadd函数的里的格式字符串,如yyyy,m,d等字符串要用单引号或双引号扩住,否则这个函数执行不过去的。注意在t-sql里是不用加引号的,如SELECT DATEADD(mm, 2, getdate())。虽然MDX是弱类型的,但有时候也需要强制类型转换,因为mydate变量声明的时候是日期类型,但后面要用它拼接成一个成员的字符串表达式,所以直接用还不行,要用vb的CStr()函数来转换类型。
在MDX里同样一个标识符,两边加上大括号和不加大括号是不一样的。不加有时候只是一个级别或者层次,加上有时候就相当于给这个层次执行Member函数,就是相当于这个层次标识符后面加上一个".Members",它就成了一个集了。
1、统计昨日的销售额
WITH MEMBER mydate as now()
SELECT {[Measures].[销售额]} on COLUMNS,
{StrToMember("[时间维].[日].&[" + Format(DateAdd('d',-1,CDate(mydate)), "yyyy年MM月dd日") + "]")} on ROWS
from [产品销售专题]
也可以写成:
WITH MEMBER mydate as now()-1
SELECT {[Measures].[销售额]} on COLUMNS,
{StrToMember("[时间维].[日].&[" + Format(mydate, "yyyy年MM月dd日") + "]")} on ROWS
from [产品销售专题]
2、统计最近三个月的销售额(这个也可以用mdx的函数实现)
WITH MEMBER mydate as now()
SELECT {[Measures].[销售额]} on COLUMNS,
{StrToMember("[时间维].[月].&[" + Format(DateAdd('m',-2,CDate(mydate)), "yyyy年MM月") + "]"):StrToMember("[时间维].[月].&["+ Format(mydate, "yyyy年MM月") +"]")} on ROWS
from [产品销售专题]
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
### OLAP的MDX语句运用详解 #### 一、OLAP与MDX简介 - **OLAP(Online Analytical Processing)**:联机分析处理,是一种数据仓库环境中的数据分析技术,提供快速、灵活的数据访问能力,以支持复杂的分析操作,并...
MDX 查询基础知识 基本 MDX 查询 EXISTING 关键字 用查询轴和切片器轴限定查询 指定查询轴的内容 指定切片器轴的内容 在简单示例中使用查询轴和切片器轴 在查询中建立多维数据集上下文 在 MDX 中生成子多维数据集 在...
5. **计算成员(Calculated Members)**:MDX允许创建临时的、基于现有成员的新成员,这些成员可以是动态计算的,根据当前查询上下文变化。 6. **TopCount和BottomCount**:这两个函数用于返回排序后前N个或后N个...
这个程序可能会读取输入的MDX语句,然后通过词法分析将其拆解为可操作的部分,准备进一步的语法分析和执行。 总结起来,MDX赋值语句的词法分析涉及到以下几个关键点: 1. 识别和处理MDX中的赋值操作。 2. 理解逗号...
6. **MDX查询(Queries)**:使用MDX语句来选择、过滤、聚合立方体中的数据,如`SELECT [Measures].[Sales] ON COLUMNS, [Time].[Year].[2022] ON ROWS FROM [SalesCube]`。 7. **切片与骰子(Slicing & Dicing)**:...
基本的MDX语句由一组轴(Axes)、一个选择集(Set)和可选的计算成员(Calculated Member)组成。例如,以下简单的MDX查询: ``` SELECT [Measures].[Sales] ON COLUMNS, [Time].[Year].[2005] ON ROWS FROM [Sales...
### 示例:MDX查询语句 一个简单的MDX查询示例如下: ```mdx SELECT {[Measures].[UnitSales]} ON COLUMNS, ORDER(EXCEPT([PromotionMedia].[MediaType].MEMBERS, {[PromotionMedia].[MediaType].[NoMedia]}), ...
在多维表达式(MDX)中,查询轴是一种重要的机制,它被用来定义由`SELECT`语句返回的单元集的范围。通过这种方式,开发人员能够精确地控制客户端看到的数据。本文将深入探讨如何在MDX中指定查询轴的内容。 #### 查询...
MDX查询语句的构造涉及这些基本对象,集合通常放在轴(axes)上展示,构成一个多维数据的可视化布局。标准的MDX查询语法大致如下: ```mdx SELECT <Set_1> ON 0, <Set_2> ON 1 FROM WHERE ``` 其中,`<Set_1>`和`...
3. **基本MDX语法**:MDX查询由选择语句(SELECT)、从哪选取(FROM)、在哪选取(ON)以及可能的过滤条件(WHERE)组成。例如,`SELECT [Measures].[Sales] ON Columns, [Time].[Year].[Year].Members ON Rows FROM...
2. **基本查询语法**:一个简单的MDX查询通常由SELECT语句开始,选择要在结果集中显示的维度和度量。例如,`SELECT [Measures].[Sales] ON COLUMNS, [Time].[Year].[All Years] ON ROWS FROM [CubeName]` 这个查询会...
这本"MDX 入门教材"显然是为初学者设计的,旨在教授MDX的基础概念、语法以及如何通过MDX语句进行多维数据操作。 MDX在数据库领域扮演着重要角色,尤其是对于那些需要深度分析大量复杂数据的企业而言。它提供了一种...
- **查询Cube**:使用MDX编写查询语句,通过ADO MD中的`Command`对象执行这些查询,并将结果存储在一个`Cellset`对象中。 - **检索和操作数据集**:通过遍历`Cellset`对象中的`Cell`,可以获取特定维度组合下的...
多维表达式(MDX)语句多用于实现对海量数据的多维分析,如何对MDX语句的执行过程进行优化,进而提高查询速度是构建在线分析处理系统的一个难点。该文采用预建实例化视图的方法,使得原先基于事实表和维表的多表连接...
这个“Fast Track to MDX.pdf”很可能是关于MDX的教程,旨在帮助读者快速掌握这种强大的查询和计算语言。同时,提供的"748080_AS2005_Waremart2005.zip"可能是一个演示数据库,用于配合教程中的实例,让学习者能够...
数据部分则提供了运行这些示例所需的多维数据模型,可能包含模拟业务场景的销售、财务等数据,以便读者在实际环境中测试和验证MDX语句。 MDX的基础知识包括以下几个关键点: 1. **基础语法**:MDX语句由维度、层次...