MDX用户指南作者状态时间说明林志贤创建2006-3-21初稿简介MDX为MultiDimensionalExpressions的缩写,多维表达式,是标准的OLAP查询语言。在多数OLAPServer都提供MDX支持,如MicrosoftSQLServerOLAPServices,SAS,HyperionEssbase等。支持多维对象与数据的定义和操作。MDX在很多方面与结构化查询语言(SQL)语法相似,但它不是SQL语言的扩展;事实上,MDX所提供的一些功能也可由SQL提供,尽管不是那么有效或直观。如同SQL查询一样,每个MDX查询都要求有数据请求(SELECT子句)、起始点(FROM子句)和筛选(WHERE子句)。这些关键字以及其它关键字提供了各种工具,用来从多维数据集析取数据的特定部分。MDX还提供了可靠的函数集,用来对所检索的数据进行操作,同时还具有用用户定义函数扩展MDX的能力。 MDX为多维数据库提供了表达式查询语法,用于查询Cube数据,并提供了许多强大的分析函数,用于支持常用的OLAP分析。KingdeeOLAP实现了MDX语法,提供了大多数MDX函数,部分函数未实现,因为我们认为当前没有必要实现。本文档后面会提供支持的函数列表。本指南更像一本入门教程。更为详细的信息可以参考SQLServerOLAPServices联机文档。基本概念Cube结构在介绍MDX之前,我们简单介绍一下cube结构,理解cube结构是学习MDX的前提。我们采用SQLServerOLAPServices自带的事例OLAP数据库FoodMart来描述。我们建议你阅读《Olap模型设计指南》来学习、熟悉Cube结构。Cube是联机分析的关键。它们是一种多维结构,包括原始事实数据、聚合数据,这些数据聚合允许用户快速进行复杂查询。Cube包含两个基本的概念:维度和度量。维度(Dimension):维度提供了分类描述,表示一类分析角度,用户通过维度来分析度量数据。度量(Measures):度量表示用来聚合分析的数字信息,如数量,销售金额等。重要:度量的集合组成了一个特殊的维度,叫做”Measures”。一个维度可以包含级别的层级结构,级别(Level),地区维度可以包含级别层级:Country、State、City。每个级别比它的父级别在数据粒度上更加细粒度。又比如:一个时间维可能包含级别:年、季、月。成员,是最重要的概念之一。一个成员是维度(包括度量维Measures)上的一个项目值,时间维度上“年”级别的成员可能有2000、2001,月成员有1、2、3等等。计算成员是一种运行时通过特殊表达式动态计算的成员。计算成员可以定义为度量。计算成员不影响现有的cube数据,它基于cube数据,通过各种数学表达式和各种函数定义,可以创建复杂的表达式。任何动态分析功能,都可以通过计算成员实现,比如实现占比、同期比等等。示例Cube数据库示例OLAP数据库结构(FoodMartSalesCube,来自MicrosoftOLAPServices)。维度维度名级别描述CustomersCountryStateCityName顾客的地理分布层级EducationLevelEdicationLevel顾客教育水平,一个级别,扁平结构GenderGender顾客性别MaritalStatusMaritalStatus顾客婚姻状况ProductProductFamilyProductDepartmentProductCategoryProductSubCategoryBrandnameProductName产品维,ValueofsalestransactionslesscostofgoodssoldSalesAverageStoresales/salescount表达式表示法维度、级别、成员等,一般用唯一名称UniqueName来标示,可以用[]包围name,如果name有空格或者以数字开头,必须使用[],否则可以忽略。UniqueName是根据层级结构表示的一种方法。即递归显示出祖先的名称。维度(Dimension):维度直接用[]包围。Product的唯一名称为[Product]或Product,维度EducationLevel的唯一名称为[EducationLevel]。度量维为[Measures]。级别(Level):级别的UniqueName为[维度名称].[级别名称],如[Product].[ProductFamily],同样,如果没有空格,[]可以省略,如Product.[ProductFamily]。成员(Member):成员的UniqueName格式为[维度].(ParentMemberUniqueName).[MemberName
MDX用户指南 来自淘豆网m.daumloan.com转载请标明出处.