当前位置:首页 » 编程语言 » sqlmdx函数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sqlmdx函数

发布时间: 2023-05-27 07:00:40

前端图表如果处理大量数据该怎么办

浅谈一下Cognos处理大数据的思路,仅针对10.2.1以下的版本,对于10.2.1当中引入的hadloop等分布式数据仓库等不做介绍。我们主要从一个一般中等项目当中,用怎样的思路来优化我们的查询。
我们主要从3个思路来思考大数据的处理

一、数据库层次
现在主流的Cognos项目,主要的开发模式还是基于rolap的dmr报表建模。因此,数据库的优化就显得由为重要。主要通过以下几个方面优化我们的数据库:

(1)维度id,维度层次id等关键减缩字段建立索引建立、维护。
(2)根据数据量的大小,按时间等进行分区优化。
(3)高速缓冲表MQT的使用
(4)表空间、缓冲池设置等
(5)数据库性能优化

二、Cognos Server优化
Cognos优化包括对配置文件的优化,集群的搭建,服务和日志的开启等基于cognos 软件安装,配置的优化,主要包括以下几个方面:

2.1 apache 配置优化
Timeout(超时)/MaxKeepAliveRequests(最大的请求数)/KeepAliveTimeout(请求超时)的优化配置

2.2Cognos自带tomcat配置调优
(1)可修改TOMCAT配置文件CRN_ROOT\tomcat.\conf\server.xml。其参数集中在行:
可以对maxProcessors(最大进程数)/AcceptCount(最大连接数) ConnectionTimeout(连接超时)进行修改
(2)文件路径:CRN_ROOT\tomcat.\conf\web.xml
可以对session-timeout进行修改.

2.3Cognos sever配置文件优化
2.3.1 reportservice.xml优化
文件路径:CRN_ROOT\ webapps\p2pd\WEB-INF\services\ reportservice.xml
注:修改文件后,重启服务后配置生效。
包括以下参数 max_process(交互报表处理进程数,和cpu有关) inger_process(交互报表初始化进程数,和cpu优关)
max_non_affine_connections_per_process(交互报表所占线程数) idle_process_check_interval_ms(空闲检测时间)
queue_time_limit_ms(报表服务队列时间限制) async_wait_timeout_ms(Dispatcher请求等待同步时间)

2.3.2 batchreportservice.xml
文件路径:CRN_ROOT\ webapps\p2pd\WEB-INF\services\ batchreportservice.xml
注:修改文件后,重启服务后配置生效。
包括以下参数 max_process(服务批量报表处理所占进程数) linger_process(服务批量报表处理初始化进程数)
max_non_affine_connections_per_process(服务批量报表处理所占线程数) idle_process_check_interval_ms(空闲进程检测时间间隔)
idle_process_max_idle_ticks(空闲进程检测标记) queue_time_limit_ms(批量报表处理排队时间限制) async_wait_timeout_ms(Dispatcher请求等待同步时间)

2.3.3 CQEConfig.xml
主要是与数据库参数设置,文件路径:CRN_ROOT\configuration\ CQEConfig.xml.sample
注:将CQEConfig.xml.sample文件名修改为CQEConfig.xml后,重启服务后配置生效。
可以修改以下参数:Timeout(应用数据库连接超时设置) PoolSize(应用数据库连接池最大连接数设置) queryReuse(查询缓冲设置)
2013-07-08 0
分享
答案对人有帮助,有参考价值1

曾力 - Cognos讲师、Cognos独立顾问、数据仓库架构师 2013-07-08 回答
2.3.4 ppds_cfg.xml
主要进行缓存和日志参数设置,文件路径:\cognos\c8\configuration\ ppds_cfg.xml
注:重启服务后配置生效。
可以修改以下参数:ReadCacheSize(可减少用户访问时服务器的磁盘IO。提高访问速度。) pcQueryLogFile(建议生产环境关闭该日志的跟踪,一般默认也是关闭状态)

2.4 Cognos content store优化
2.4.1优化内容库连接服务
内容库最好外配为db2 oracle等数据库,不要用自带的derby.因为项目中的日志信息会非常多,严重影响内容库的效率。
Cognos Administration,在系统下选择选择对应的服务,选择ContentManagerService的属性,设置相应的连接参数信息。

2.4.2日志优化
适当开启各个cognos服务的日志级别,越高级的级别对应更详细,更明确的日志,但也会影响整个系统的效率。
这是一把双刃剑,需要适当调整。日志级别设置得越高,就越降低系统性能。通常情况下,您可以将级别设置为
“最小”或“基本”来收集错误,或设置为“请求”来收集错误和警告。

2.5提高访问数据库速度
Cognos和数据库间参数在cer\bin\cogdm.ini文件中,(根据版本不同是安装目录的数字,根据连接的数据库不同,是对应数据库名称的关键字)
以oracle数据库为例,参数在cogdmor.ini文件中,打开这个文件查找字符串Fetch Number of Rows=去掉这行前面的分号,将10改成2000;
这样这行就成了Fetch Number of Rows=2000,表示是每次从数据库取2000条数据。其他数据库基本上都有类似的配置。用以提高从数据库中提取数据的速度。

2.6加大缓存
cer\bin\Cer.ini(*根据版本不同是安装目录的数字):
SortMemory=5120
(这里 SortMemory 单位是 2kbytes,5120代表 2k x 5120 = 10M)(技巧:一般 SortMemory 取空闲内存的十分之一到八分之一大小)

2.7修改cognos configuration中的参数来优化
在cognos configuration中有很多参数可以优化来提高整体软件的运行效率,比如增加内存、增加查询缓存

2.8分布式部署
分布式部署可以大大提升Cognos服务器的负载能力,同时容错保护功能可以使服务器更为稳定的运行,很好的支持大用户量的并发使用。
2013-07-08 0
答案对人有帮助,有参考价值1

曾力 - Cognos讲师、Cognos独立顾问、数据仓库架构师 2013-07-08 回答
3.报表设计优化
Cognos报表作为一个工具,在非cube模式下,最终我们执行报表查询的时候,我们的报表发送到数据库进行查询的本质还是sql,所以,在我们制作一张报表的时候,我们要尽可能的利用fm,rs当中的功能,优化报表最终执行生成的SQL实现整个报表的优化。而CUBE模式下,我们更多要考虑配置、存放和数据库大小所造成的影响,下面我会细细说来。
2013-07-08 0
答案对人有帮助,有参考价值1

曾力 - Cognos讲师、Cognos独立顾问、数据仓库架构师 2013-07-08 回答
3.1 FM建模优化
3.1.1手写SQL定制查询主题
右键点击查询主题的菜单项Edit Definition…可以进入SQL语句编写框,调整查询主题的SQL语句。默认情况下,这里的SQL语句为Cognos SQL类型。如果需要编写应用数据库可以直接运行的本地SQL需要将这里的SQL类型进行设置。点击右上方的Options按钮,选择SQL Settings标签页,选择SQL Type为Native。这个时候,我们手写SQL就非常注重这个SQL的优化,尽量避免SELECT *,用EXISTS替代IN,多使用DECODE来进行判断,条件语句注意点等常用SQL优化策略,编写对应的SQL.

3.1.2尽量使用特定数据的数据库函数
在菜单项Actions中选择Specify Package Function List…指定报表定制中可以使用的数据库函数列表。将除应用数据库意外的其他数据库类型从Selected function sets中选到Available function sets中,尽量使用特定数据库的自带函数可以提高查询效率。

3.1.3表关联设定
在建立表关联尽量避免使用外关联关系(包括左外关联、右外关联、全外关联)。外关联的使用会使数据库的查询压力骤增,从而影响前端报表的生成。在星型结构、雪花型结构的数据仓库模型中,尽量按照一对一、一对多的关联关系设定维表与实事表之间的关联,Cognos Server会依照这里的关联关系自动优化提交给数据库的SQL语句。如果关联关系中出现了环状连接关系,可以通过别名表或是快捷键的方式解决环状连接问题.

3.1.4Edit Governors查询性能设置
在菜单项Project中选择Edit Governors,可以设置查询的查询性能
Report table limits 该属性设置报表中运行SQL所涉及的TABLE数量
Data retrieval limits 该属性设置报表中运行SQL返回结果的数量
Query execution time limits 该属性设置报表中运行SQL的执行时间
Large text items limit 该属性设置报表中运行SQL返回大文字块的字符数量限制
2013-07-08 0
答案对人有帮助,有参考价值1

曾力 - Cognos讲师、Cognos独立顾问、数据仓库架构师 2013-07-08 回答
3.2 RS报表调优
3.2.1报表函数的使用
在报表函数的使用上,尽可能使用应用数据库能够解析的本地数据库函数,函数列表中的通用函数,在处理时会将函数放在报表服务器进行运算,从而增大了报表服务器的性能开销。

3.2.2 观察查询的SQL
我们选择查询页面,GENERATE SQL/MDX观察这个报表生成的SQL并进行不断优化,

3.3.33.2 RS报表调优
3.2.1报表函数的使用
在报表函数的使用上,尽可能使用应用数据库能够解析的本地数据库函数,函数列表中的通用函数,在处理时会将函数放在报表服务器进行运算,从而增大了报表服务器的性能开销。

3.2.2 观察查询的SQL
我们选择查询页面,GENERATE SQL/MDX观察这个报表生成的SQL并进行不断优化,

3.3.3查询字段、查询表顺序调整
根据数据库的优化策略,可能需要将查询字段的顺序进行调整,可以在Data Items窗口中进行设置。查询SQL语句中,From关键字后面的表顺序是按照select关键字后出现的字段顺序进行设置的。在为表顺序进行设置时,属性为Identifier或Attribute的字段比属性为Fact的字段在为表排序时的优先级要高,即,先以Identifier、Attribute字段的出现顺序为表进行排序,如果没有上述两类字段,才以Fact字段的出现顺序为表进行排序。

3.3.4聚合前后设置过滤条件
将过滤条件的Application属性设置为After aggregation或Before aggregation可以调整过滤条件在聚合前或是聚合后生效。After aggregation生成过滤条件的SQL语句使用的是关键字having,而Before aggregation生成过滤条件的SQL语句使用的是关键字where。

3.3.5取消报表自动分组提高明细报表查询速度
如果报表要展现明细数据,不想使用任何汇总,我们可以到此报表对应的查询中将自动分组属性定义为否。修改地方:对象的属性Auto Group & Summarize可以设置当前SQL语句的查询中是否加入distinct、sum、group by这样的关键字。默认情况下,该属性设置为Yes,可以根据查询情况关掉此开关项,减少SQL语句的复杂度。

3.3.6自动排序设置
在Query的Auto-sort属性中可以为查询设置是否自动排序。如果选择是,则会在生成的SQL语句中自动加入Order By关键字,排序字段将自动根据数据项的属性进行设置(如果查询字段的usage属性为Attribute、Identifier则排序,如果为Fact则不排序);如果选择否、则不排序;如果选择最小,则根据数据项的排序属性进行排序设置。默认值为最小。

3.3.7报表Processing设置
在Query的Processing属性中可以为查询设置SQL的处理设置。Cognos Report Studio会将报表的所有设置首先转换为Cognos SQL提交给报表服务器,服务器在进行必要处理后,会将SQL语句转换为应用数据库本地执行的SQL语句,进行数据库处理。为提高报表的处理速度,要尽可能的将报表的处理运算放在数据库进行,以保证其运行速度。将该属性设置为Database only会将报表页面生成的Cognos SQL不经报表服务器处理全部转换为数据库能够执行的本地数据库SQL,如果将该属性设置为Limited Local,则将报表页面生成的Cognos SQL先进行必要的报表服务器运算,然后再将剩余的部分提交给数据库进行本地SQL的处理。默认值为Framework中为Datasource对象的设置的queryProcessing属性。

3.3.8使用With子句
在Query的Use SQL With Clause属性中可以为查询设置是否使用With子句。部分数据库例如Oracle支持With关键字,当查询中嵌套子查询时,可以通过With子句的使用,减轻报表服务器对Cognos SQL的处理,从而提升报表的运行性能。如果将该属性设置为Yes,则允许使用With关键字,查询中生成的Native SQL将出现With子句;如果将该属性设置为No,虽然拒绝使用With关键字。默认值为Framework中Edit Governors下的Use WITH clause when generating SQL属性设置。

3.3.9报表服务器本地缓存设置
在Query的Use Local Cache属性中可以为查询设置是否使用本地缓存。如果将该属性设置为Yes,则启用服务器的本地缓存,服务器将为查询结果保存在session中,当用户在浏览器内再次打开同一张报表时,查询结果将取自缓存,从而减轻了数据库的负载压力;如果将该属性设置为No,则禁用服务器的本地缓存,查询结果全部取自数据库的实时数据。默认值为Framework中Edit Governors下的Allow usage of local cache属性设置。
我用的是finereport,比这个方便

⑵ MDX解决方案的编辑推荐

该书是《MDX解决方案》的第2版,这本权威指南解释了为什么MDX(MultiDimensionaleXpressions)是目前用于维度应用程序的最流行语言。通过学习《MDX解决方案》,您将掌握如何创建高效的多维度数据仓库,同时还可以掌握访问和分析数据的必要技能,从而能够作出更好的商业决策。
《MDX解决方案》在简要阐述了MDX语言的语法及语义之后,直接转向MDX的使用,其中提供了丰富而又实用的MDX示例。本版对第1版的内容进行了大量(超过60%)的修改与更新,新增了许多分析型应用问题。本版不仅涵盖了MDX语言本身的改动,还结合最新版本的及HyperionEssbase讲解了具体实现的变化。
《MDX解决方案》主要适用于想学习和熟练掌握MDX的开发人员、咨询师和管理人员。
《MDX解决方案》主要内容
针对Microsoft与Hyperion产品的具体应用
组合不同的MDX函数来解决各种问题的技术与技巧
SQLServer2005AnalysisServices的功能,以及与先前版本相比它与MDX之间关系的变化
MDX的标准语法,这些语法能够很好地处理许多服务器的构建并增强它们的功能
MDX运算符、函数及相关连接设置的详细附录

⑶ java导出报表70多个字段sql比较复杂,有没有什么好的实现工具,能保证报表速度(排除sql外)

您好,用SSAS吧,都有.
我们公司系统是这样实现的.
1.用一个函数得到一个明细表,该明细表包括用户感兴趣的各个维度,并且该函数的参数是用户感兴趣的查询条件.
2.按用户要求先将用户需要的维度列出来,比如说按时间断,按商品类型,按门店,地区等等.然后给每一种方式在第1步的基础上动态生成SQL语句.至于交叉,就要先从第一步中获取交叉值列表,比如说按地区交叉,则先从第一步的表中将所有的地区查出,再用case when生成动态的行列转换语句.
3.一般来说,用前两步就已经能达到用户的要求,我们公司还有一个数据分析的图形化工具,也是在第一步的基础上,由用户自定义维度和深度的,实现方法就不知道了,应该是mdx来的
简单举个例子,比如说要对公司销售数据进行统计,维度包括 时间,地区,商品品牌,查询销量,销售金额
那可以用一个函数 fn_getSales(beginday,endday,area,matgroup),四个参数由用户在界面上选择或输入,函数从销售明细表中返回一个表,包含 时间(day),区域(area),商品品牌(brand),销量(digit),销售金额(totalmoney)的明细数据表.
统计的话,比如说要按商品品牌分组,那只要生成动态语句:
select matgroup,sum(digit),sum(totalmoney) from fn_getSales(beginday,endday,area,matgroup) group by matgroup即可.
如果要按地区进行交叉,按商品品牌分组的统计数据,则先取得地区列表
select area from fn_getSales(beginday,endday,area,matgroup) group by area
将得到的area记录下来,到一个数组,或到一个临时表都行
然后拼装行列转换的SQL语句
select matgroup,
sum(case 地区1 then digit else 0 end) as 地区1销量,
sum(case 地区1 then totalmoney else 0 end) as 地区1销售金额,
sum(case 地区2 then digit else 0 end) as 地区2销量,
sum(case 地区2 then totalmoney else 0 end) as 地区2销售金额,
....循环将所有的地区这样列出
from fn_getSales(beginday,endday,area,matgroup)
这样就得到了每一种商品在每个地区的销量和销售金额分布情况
如果这种东西写多了你就会发现完全可以将拼装方法固定下来,都是有规律的,你可以写一个专门用于拼装SQL的类,这时候就会很容易了。

⑷ MDX解决方案的目录

第1章MDX入门1
1.1什么是MDX1
1.2查询基础2
1.3轴框架:名称与编号4
1.4大小写敏感与布局5
1.5构造简单的MDX6
1.5.1逗号(,)与冒号(:)6
1.5.2.Members7
1.5.3使用.Children获得一个成员的子成员8
1.5.4使用Descendants()获取一个成员的后代成员9
1.6去除查询结果中的空切片11
1.7MDX中的注释13
1.8MDX数据模型:元组和集14
1.8.1元组14
1.8.2集16
1.8.3查询17
1.9更多基本词汇18
1.9.1CrossJoin()18
1.9.2Filter()20
1.9.3Order()22
1.10查询成员属性24
1.11查询单元属性26
1.12客户端结果数据布局27
1.13小结28
第2章计算成员和命名集简介29
2.1采用计算成员形式的维度计算29
2.2计算成员作用域30
2.2.1计算成员和查询的WITH部分31
2.2.2公式的优先级(求解顺序)32
2.3基本的计算函数37
2.3.1算术操作符37
2.3.2概要统计操作符37
2.3.3Avg()函数38
2.3.4Count(),.Count38
2.3.5DistinctCount()函数(Microsoft扩展)39
2.3.6Sum()函数39
2.3.7Max()函数40
2.3.8Median()函数40
2.3.9Min()函数40
2.3.10NonEmptyCount()函数(Hyperion扩展)41
2.3.11Stdev()和Stddev()函数41
2.3.12StdevP()和StddevP()函数(Microsoft扩展)41
2.3.13Var()和Variance()函数42
2.3.14VarP()和VarianceP()函数(Microsoft扩展)42
2.4补充的函数42
2.5命名集简介44
2.6小结47
第3章MDX中的通用计算和选择49
3.1MDX中的元数据引用函数51
3.2多种比率﹑均值﹑百分比和分配52
3.3贡献率(同一层次结构中级别之间的简单比率)52
3.3.1对总额的贡献率53
3.3.2使用.CurrentMember函数53
3.3.3使用.Parent函数53
3.3.4使用.CurrentMember函数和.Parent函数获得父对象份额53
3.3.5使用Ancestor函数54
3.3.6使用.CurrentMember函数和Ancestor函数计算祖先对象的份额54
3.3.70作除数的处理56
3.4基本分配56
3.4.1基于另一种比率的数量比例分配56
3.4.2沿层次结构的非加权分配57
3.5均值57
3.5.1简单均值57
3.5.2加权均值58
3.6基于时间的引用和时间序列的计算60
3.6.1各时期(Period-to-Period)的引用和计算60
3.6.2去年同期的引用和计算61
3.7本年至今的聚合61
3.8移动均值和52周的最高价/最低价63
3.9使用LastPeriods()选择基于目标成员的时间范围65
3.10沿不同维度的不同聚合(使用MDX的半加性度量)65
3.11混合聚合:非时间总和,沿时间的均值、最小值与最大值66
3.12混合聚合:非时间总和,沿时间维度的期初/期末结余66
3.13对于缓慢变化值的余额转结和最后输入的结余报告67
3.14查找数据全部输入的最后时间成员71
3.15在MDX表达式中使用成员属性(计算和分类)71
3.16处理边界条件(超出范围的成员,0或其他作除数)74
3.16.1处理不足的范围尺寸74
3.16.2处理不足的层次结构深度75
3.16.3处理错误的级别引用75
3.16.40作除数的处理76
3.17小结77
第4章MDX查询上下文与执行79
4.1查询中的单元上下文和解析次序80
4.1.1查询的执行阶段80
4.1.2单元求值(对任何单元)87
4.1.3解析NONEMPTY轴89
4.1.4解析AS2005中的HAVING子句90
4.1.5循环上下文和.CurrentMember函数92
4.1.6AS2005中成员的相互联系:强层次结构性、自存在性和属性关系93
4.2在AS2005中修改多维数据集上下文96
4.2.1CREATESUBCUBE语句97
4.2.2在AS2005中的FROM子句中使用SELECT103
4.2.3无限递归:在计算上下文可能遇到的“陷阱”106
4.2.4特定产品解析次序的使用106
4.3非数据:无效数字、NULL(空)和无效成员109
4.3.1无效计算:0作除数和数字错误109
4.3.2空单元的语义110
4.3.3无效位置112
4.4计算中的单元属性优先级114
4.4.1显示格式化的优先级115
4.4.2计算单元中的数据类型116
4.5操作中多维数据集的上下文117
4.6KPI中的多维数据集上下文117
4.7AS2005中全局、会话和指定查询计算之间的定义的可见性117
4.8小结119
第5章命名集与集的别名121
5.1命名集:作用域和上下文121
5.2命名集的常规使用122
5.3集的别名124
5.3.1集的别名的示例124
5.3.2深入了解集的别名126
5.3.3当集的别名是必需的情况128
5.4小结130
第6章MDX中的排序和分类131
6.1函数131
6.2典型的Top-N选择132
6.2.1加入分类数(使用Rank()函数)134
6.2.2在集中取得Top-N的后代成员及其他关联成员138
6.3获得最少/最多元组以达到临界值140
6.4获取元组TopN百分比142
6.5在维度次序中放置成员/元组(首先/最后放置祖先成员)143
6.6集的反向排序144
6.7小结145
第7章MDX高级应用147
7.1将父对象/祖先成员排在子对象之后(而不是之前)148
7.2返回成员下面的子树,并连同成员一起返回其祖先成员148
7.3使用Generate()将元组操作转化为集操作149
7.4日期计算/日期算术150
7.5对行/列/轴上选择的成员定义比率(而非对指定维度定义比率)153
7.6基于报表的父对象总额,报表总额的贡献率156
7.6.1方法1:唯一的标准MDX方法156
7.6.2方法2:在AnalysisServices中考虑使用VisualTotals()161
7.6.3方法3:使用AS2005子多维数据集163
7.7层次结构中越过级别的层次结构排序164
7.8基于多重规则的单个集排序165
7.9多重层排序或多重维度排序166
7.9.1对每个维度采取相同排序规则的嵌套排序166
7.9.2依据不同标准的嵌套维度排序167
7.10Pareto分析与累积和169
7.11返回top-selling(最畅销)产品(或其他重要的名称)作为度量173
7.12已选成员集的最新事件174
7.13积聚大量数据所需的时间集(建立沿时间向前或向后合计的集)177
7.14乘法聚合(乘积代替加和)180
7.15通过集中的并列分类包含所有元组184
7.16公用维度时间分析186
7.17样本分析188
7.18小结195
第8章使用MicrosoftAnalysisServices的属性数据模型197
8.1统一维度模型197
8.2维度199
8.2.1属性、层次结构与联系201
8.2.2维度查询205
8.2.3成员属性207
8.2.4父-子层次结构209
8.2.5Time维度210
8.3多维数据集211
8.3.1维度关系214
8.3.2角色扮演维度217
8.3.3透视图217
8.3.4钻取218
8.4UDM中的计算模型218
8.5在UDM上定义安全性219
8.6小结224
第9章HyperionEssbase中属性维度和成员属性的用法225
9.1UDA与属性225
9.2在查询轴检索UDA和属性值226
9.3在计算中使用UDA和属性227
9.4基于UDA和属性值选择基维度成员227
9.4.1使用Attribute函数选择基于共用属性值的成员228
9.4.2使用WithAttr函数选择基于属性值的成员229
9.4.3使用UDA函数选择共用UDA值的成员230
9.5用IN连接基成员和属性层次结构230
9.5.1连接基成员及其实际属性成员231
9.5.2连接属性成员及其属性值231
9.6小结232
第10章通过外部函数扩展MDX233
10.1配合MDX使用存储过程234
10.2ADOMD服务器对象237
10.2.1表达式239
10.2.2元组生成器239
10.2.3集生成器240
10.2.4MDX240
10.2.5上下文241
10.2.6服务器元数据对象242
10.3AMO.NET托管存储过程243
10.4静态函数与非静态函数的性能评估244
10.4.1调试.NET存储过程245
10.4.2NULL、ERROR()与异常等方面的附加程序设计246
10.4.3使用存储过程以获得动态安全性248
10.4.4COMDLL存储过程251
10.5参数与返回类型的深入讨论251
10.6用于COM存储过程的MDX函数256
10.6.1SetToStr()与TupleToStr()256
10.6.2Members()、StrToSet()与StrToTuple()256
10.7外部函数示例:TimeSpanUntilSum()函数258
10.8加载和使用存储过程260
10.9存储过程名称解析261
10.10在MDX中调用存储过程262
10.11对存储过程的其他考虑因素263
10.12小结263
第11章通过MDX改变多维数据集和维度环境265
11.1在会话中改变维度的默认成员266
11.2维度回写操作266
11.2.1创建新成员267
11.2.2在维度中移动成员267
11.2.3删除成员268
11.2.4更新成员定义268
11.3刷新单元数据与维度成员269
11.4把数据写回多维数据集269
11.4.1标准单元写回270
11.4.2提交与回滚270
11.4.3使用UPDATECUBE270
11.5小结273
第12章MicrosoftAnalysisServices中计算的多种方法275
12.1计算机制概述276
12.1.1度量的固有聚合276
12.1.2使用一元运算符汇总277
12.1.3自定义成员公式279
12.1.4计算成员280
12.1.5单元计算283
12.1.6条件格式化287
12.2各类计算如何交互288
12.2.1无单元计算的交互288
12.2.2单元计算传递289
12.2.3使用求解顺序来决定传递中的公式293
12.2.4计算成员本身不是聚合的294
12.2.5自定义汇总、自定义成员与计算单元结果的固有聚合295
12.3使用不同计算技术时应注意的问题295
12.4小结296
第13章AnalysisServices2005中的MDX脚本297
13.1MDX脚本基础297
13.1.1什么是MDX脚本297
13.1.2计算语句299
13.1.3子多维数据集300
13.1.4赋值与聚合303
13.1.5赋值与计算成员307
13.1.6赋值与命名集308
13.2MDX脚本以及更复杂的多维数据集309
13.2.1多属性层次结构309
13.2.2用户层次结构315
13.2.3父子属性层次结构316
13.2.4多对多维度317
13.2.5事实维度与引用维度319
13.2.6半累加性度量与非累加性度量319
13.2.7一元运算符与自定义成员公式321
13.3高级MDX脚本323
13.3.1定义带有SCOPE的子多维数据集323
13.3.2MDX表达式赋值326
13.3.3给子多维数据集赋予一个错误的值329
13.3.4将单元属性值赋给子多维数据集330
13.3.5条件赋值331
13.4现实世界中的MDX脚本332
13.4.1TimeIntelligence向导332
13.4.2回顾基本分配335
13.5小结336
第14章增强客户端的交互337
14.1使用钻取338
14.1.中针对钻取的改进与改变338
14.1.2钻取MDXI339
14.1.3与钻取相关的重要问题340
14.1.4钻取MDXII342
14.1.5钻取安全性343
14.2使用操作343
14.2.1使用操作能够做什么?344
14.2.2操作的目标347
14.2.3定义操作348
14.2.4与操作相关的编程注意事项351
14.2.5删除操作354
14.3使用KPI355
14.3.1创建KPI355
14.3.2MDXKPI函数358
14.3.3使用KPI359
14.4小结361
第15章客户端编程基础363
15.1ADOMD.NET基础364
15.1.1先决条件365
15.1.2建立连接365
15.2处理元数据366
15.2.1获取构架行集366
15.2.2使用构架行集时的互操作性问题367
15.2.3使用元数据对象模型367
15.2.4使用元数据对象模型时的互操作性问题368
15.2.5维度特性368
15.2.6处理ADOMD.NET元数据缓存369
15.3执行查询370
15.3.1执行命令370
15.3.2参数化命令371
15.3.3使用CellSet对象372
15.3.4关于从查询中获取信息的更多细节376
15.3.5关键性能指标381
15.4执行操作382
15.5处理“平展的”MDX结果383
15.6小结387
第16章优化MDX389
16.1从AnalysisServices2000到AnalysisServices2005的体系结构改动390
16.2优化集操作391
16.2.1交叉联接集合之上求和391
16.2.2交叉联接集之上进行筛选393
16.2.3优化TopCount()和BottomCount()394
16.2.4AnalysisServices2005中的NonEmpty函数395
16.2.5优化排序:Order()396
16.2.6针对较大数据集查询的UnOrder函数397
16.3优化求和397
16.4将计算设计在数据库中(将成员属性放入度量中以及新的MDX函数MemberValue中)398
16.5MDX脚本优化400
16.5.1计算的细节400
16.5.2避免叶级别的计算401
16.5.3在多维数据集设计中避免叶级别计算402
16.5.4度量值表达式优化叶级别计算403
16.5.5叶级别计算的MDX脚本优化404
16.5.6AnalysisServices2005:使用属性层次结构而不是成员属性406
16.5.7AnalysisServices2005:使用Scope来替代IIF407
16.6在MDX脚本中避免使用慢速函数409
16.6.1为了更好的性能而改变计算逻辑:流计算409
16.6.2使用服务器本地特性而不是脚本来进行与聚合相关的计算411
16.7小结412
第17章使用本地多维数据集413
17.1选择使用何种语法414
17.2使用CREATECUBE语句414
17.2.1过程概述414
17.2.2CREATECUBE语句剖析415
17.2.3定义维度416
17.2.4级别417
17.2.5定义度量422
17.2.6添加命令423
17.2.7ROLAP与MOLAP424
17.2.8INSERTINTO语句剖析424
17.2.9多维数据集目标425
17.2.10INSERTINTO中的OPTIONS子句427
17.2.11SELEC子句428
17.2.12构造提示430
17.2.13从本地多维数据集到服务器多维数据集431
17.2.14汇总与自定义成员公式431
17.3使用CREATEGLOBALCUBE语句433
17.3.1过程概述433
17.3.2CREATEGLOBALCUBE语句剖析433
17.3.3定义度量434
17.3.4定义维度434
17.3.5定义级别435
17.3.6定义切片成员435
17.3.7需要注意的事项436
17.4使用分析服务脚本语言436
17.4.1过程概述436
17.4.2ASSL语句剖析437
17.4.3安全性437
17.5小结438
附录AMDX函数与运算符参考439
附录B影响MDX的连接参数523
附录C单元与成员的内部属性541
附录D格式化字符串编码551
附录E学习资源559
……

⑸ 请问MDX是什么意思

多维表达式

MDX是OLAP多维立方体查询语言,支持定义和操作多维对象和数据,在功能上类似于关系数据库查询语言SQL。它语法丰富,执行效率高,功能强大,是OLAP服务器与外界交互的专用语言。

以下出自 《SQL Server 2005 联机丛书》
多维表达式 (MDX) 是一种功能完备、基于语句的脚本语言,用于定义、使用以及从 Microsoft SQL Server 2005 Analysis Services (SSAS) 中的多维对象中检索数据。MDX 提供以下几种语言功能:

用于创建、删除以及使用多维对象的数据定义语言 (DDL) 语句。
用于从多维对象中检索操作数据的数据操作语言 (DML) 语句。
用于管理作用域、上下文以及 MDX 脚本内的流控制的脚本语言语句。
用于操作从多维对象中检索的数据的大量运算符和函数。
使用用户定义函数扩展 MDX 的功能。

MDX 在很多方面与关系数据库常用的 SQL 语法类似,但 MDX 不是 SQL 语言的扩展。事实上,MDX 所提供的一些功能也可由 SQL 提供,尽管不是那么有效或直观。

⑹ MS Sql 查询 集合运算的交并补如何写

你是要在MDX查询中使用吗?(我怕你误以为是T-SQL里边的函数),MDX查询是不能直接像T-SQL语句那样在查询分析器里执行的。
在MDX查询里,你要明白集合的概念就很容易掌握了。

其实MDX示例程序里就带了EXCEPT的用法:
select
{[Measures].[Unit Sales]} on columns,
order(except([Promotion Media].[Media Type].members,{[Promotion Media].[Media Type].[No Media]}),[Measures].[Unit Sales],DESC) on rows
from Sales

T-SQL里查询的话,可以用union,in和not in来查询,这要看你的具体数据了。