全部文档
文档中心财务模型多维表达式MDXMDX语法MDX的数据类型

MDX的数据类型

一个整数或非整数的数值。

True /false。函数或者逻辑表达式可以返回布尔类型的值。

字符串用单引号包围起来表示 (’ … ‘).

维度是多维数据集的列的属性组。维度类型很少单独使用,更多时候是结合维度成员名一起使用来表示一个维度成员。

Dimension_Name  
Scenario
Account

需要注意的是,在先胜云平台MDX的概念中,维度名Dimension_Name不一定等于系统中维度的元素名。 财务模型元素的不同列可以引用同一个维度元素,因此在对财务模型使用MDX语句中,这里Account表示的不是引用的Account元素名,而是财务模型的事实表上的Account这列的列名。只是大多数时候,财务模型在配置时会使用维度元素名作为列名。

成员,或者称维度/度量成员。目前在财务模型中,仅有维度成员,而没有度量成员。在先胜的维度元素中的每行数据就代表一个维度成员。在一个维度中的成员名是不允许重复的,而成员描述可以重复。 成员表达式包含成员标识符和可以返回一个成员的函数。 关于成员标识符,在国际通用的MDX语言中,成员的表示方式是:

Dimension_Name  
.[Hierarchy_Name.] [[{Member_Name | &Member_Key}.]... ] {Member_Name}  

而在先胜云MDX中,因为维度成员是全维度中唯一的,因此我们可以以[维度名].[成员]的方式来体现(在后期增加类似BI的维度建模能力后,我们再实现更加通用的MDX维度表达式的方法)。

[Scenario].[Actual]
[Account].[A0002]

在需要传递成员表达式的地方,也可以通过使用返回一个成员的函数来实现,常用的成员函数有:

Parent([Account].[A0002])    --返回科目A0002的非共享的Parent成员
FirstChild([Period].[Q1])    --返回期间Q1下的第一个子成员

先胜云平台财务模型在多版本实体维度中,存在一种特殊的父点子成员,用来表示特定父级下的某维度成员。其表达式定义如下:

Dimension_Name.[Parent_Member_Name].[Child_Member_Name] 

例如

[Entity].[A].[B]

元组,表示一组维度成员的组合,并且每个维度成员都不是来自同一个维度。元组用于标识财务模型/多维模型的特定多维数据块/切片。换言之,元组是一种成员向量。 元组标识符的完整表达式由一个或多个用圆括号括起的显式指定的成员组成: (成员表达式[,成员表达式…] )

比如,如下示例就是一个元组:

([Scenario].[Actual], [Account].[A0002], [Year].[2021])

而下例就不构成一个元组,因为存在两个Account成员:

([Scenario].[Actual], [Account].[A0002], [Account].[A0003],[Year].[2021])

在标准的MDX体系中,例如在微软和IBM的MDX中,会为元组中不存在的当前模型的其他维度补充隐式成员(在元组中明确定义的称为显式成员),即保证一个元组中包含该模型的所有维度。而在Oracle体系中,则不会为元组补充隐式成员。在先胜云的模型体系中,我们定义元组不会进行隐式成员的补充。

同类型对象的有序列表称为集合(Set)。 目前先胜云MDX所支持的集合有成员集合和元组集合。成员集合常用于MDX计算范围定义语句中,或计算函数中。元组集合常用于MDX 查询的查询轴和查询切片中。 一个集合可以由集合表达式得到,也可由返回值是集合的函数得到。 集合表达式的定义是由大括号包裹的一个或多个显式指定的对象。

{ [ { 元组表达式 | 成员表达式 } [ , { 元组表达式 | 成员表达式 } ] ... ] }

以下是两个集合表达式的示例:

//成员集合
{[Account].[price], [Account].[vol], [Account].[amount]}

//元组集合
{([Year].[2021], [Period].[1]),([Year].[2021], [Period].[2]),([Year].[2021], [Period].[3]) }

对于元组集合,其内部的维度以及维度的顺序都必须保持一致,如,下例给出了一些非法的集合,这些集合会在解析时被校验并抛出错误信息。

{[Account].[price], [Account].[amount], [Scenario].[Actual]}    --前两个元组都只有Account维度,第三个里有Scenario维度

{([Year].[2021], [Period].[1]),([Year].[2021], [Period].[2]),([Year].[2021], [Scenario].[Actual]) }   --前两个元组都是Year和Period的组合,第三个元组是Year和Scenairo的组合。

{([Year].[2021], [Period].[1]),([Year].[2021], [Period].[2]),([Period].[3], [Year].[2021]) }    --第三个元组中Year和Period维度的顺序同前两个元组不一致

比较常用的集合的函数有Base,Children,CrossJoin, Union等。关于具体的函数的用法,请参考《MDX函数》。 在后续的函数定义中,我们将用 {Member} 表示成员集合,用 {Tuple} 来表示元组集合。

回到顶部

咨询热线

400-821-9199

我们使用 ChatGPT,基于文档中心的内容以及对话上下文回答您的问题。

ctrl+Enter to send