在我们前面的教程中,我们看到了如何基于事实表和维表构建cube,以及事实表和维表如何关联。这就是一种最普通的映射,即星型模型 star schema.
但是一个维度可以基于超过一个表,通过定义良好的路径连接这些表到事实表上,这种维度称为雪花,使用 操作符定义,例如:
<table border="1" cellspacing="0" cellpadding="2" width="600">
<Cube name="Sales">
...
Dimension name="Product" foreignKey="product_id">
<Hierarchy hasAll="true" primaryKey="product_id" primaryKeyTable="product">
<Join leftKey="product_class_key" rightAlias="product_class" rightKey="product_class_id">
<Table name="product"/>
<Join leftKey="product_type_id" rightKey="product_type_id">
<Table name="product_class"/>
<Table name="product_type"/>
Join>
Join>
Hierarchy>
Dimension>
Cube>
在上面例子中的”Product”维度有三个表组成,事实表通过外键”product_id”连接到”product”表,通过外键“product_class_id”连接到产品类别,通过”product_type_id”连接到product_type。我们需要 元素嵌套。
看上去表的排列很复杂,但实际上通过产品表关联,可以减少数据量。