参考: http://mondrian.pentaho.com/documentation/schema.php
一个OLAP SCHEMA至少需要满足以下几点
1. 支持定义一个或者多个星型模型、雪花模型
2. 并且支持CUBE的标准描述
3. 而且需要支持对CUBE的标准操作
试着按着自己的理解回溯mondrian定义schema的过程。
No1.Schema至少要包含物理模型和逻辑模型(CUBE)之间的关系,所以可能最简单的schema结构是这样的
</pre><p></p><pre name="code" class="html"><Schema name='Sales'>
<PhysicalSchema>
</PhysicalSchema>
<Cube name='Sales'>
</Cube name='Sales'>
<Schema name='Sales'>
No2.描述物理模型至少需要知道表名,主键等信息; 描述cube模型需要包含维度和事实,所以schema的结构会变成这样
<Schema name='Sales'>
<PhysicalSchema>
<Table name='customer'>
<Key>
<Column name='customer_id' />
</Key>
</Table>
...
</PhysicalSchema>
<Cube name='Sales'>
<Dimensions>
<Dimension></Dimension>
...
</Dimensions>
<MeasureGroups>
<MeasureGroup></MeasureGroup>
...
</MeasureGroups>
</Cube>
</Schema>
No3.根据cube中维的定义,维度下有层级,层级下有层次。层级一般对应物理模型中的字段。所以可能结构是这样的
<Schema name='Sales'>
<PhysicalSchema>
<Table name='customer'>
<Key>
<Column name='customer_id' />
</Key>
</Table>
</PhysicalSchema>
<Cube name='Sales'>
<Dimensions>
<Dimension>
<Attributes>
<Attribute name='Supervisor Id' keyColumn='supervisor_id' orderByColumn='supervisor_id' />
</Attributes>
</Dimension>
</Dimensions>
<MeasureGroups>
<MeasureGroup></MeasureGroup>
</MeasureGroups>
</Cube>
</Schema>