雪花模式

雪花模式

mondrian支持星型模式和雪花模式。下面介绍一下雪花模式的建模,它需要用到操作符 <Join>.比如:

<Cube name="Sales">

...<Dimension name="Product" foreignKey="product_id">

<Hierarchy hasAll="true" primaryKey="product_id" primaryKeyTable="product">

<Join leftKey="product_class_id" rightAlias="product_class" rightKey="product_class_id"> 

// rightAlias="product_class"指明与product_class相连

<Table name="product"/> 

<Join leftKey="product_type_id" rightKey="product_type_id"> 

<Table name="product_class"/>  //1

<Table name="product_type"/>   //2

</Join>  // 12相连

</Join>

...

</Hierarchy>

</Dimension>

</Cube>

这里定义一个 "Product" 由三个表构成. 事实表连接 "product" (通过外键 "product_id"),"product"连接表"product_class" (通过外键 "product_class_id"),"product_class"连接表 "product_type" (通过外键 "product_type_id"). 我们利用 <Join> 元素的循环嵌套, <Join>带有两个操作对象; 操作对象可能是表,连接或者查询

按照操作对象行的数目来安排次序,表 "product" 的行数最大, 因此它首先出现连接事实表;然后是表 "product_class" "product_type",在雪花的末端拥有的行数最小.

注意外部元素 <Join>有一个属性 rightAlias. 这是必要的,因为join 的右边(是内部元素 <Join> ) 有可能是许多表组成的.这种情况下不需要属性leftAlias,因为列 leftKey 很明确的来自表 "product".

你可能感兴趣的:(JOIN,table,Class,hierarchy)