在我们前面的教程中,我们看到了如何基于事实表和维表构建cube,以及事实表和维表如何关联。这就是一种最普通的映射,即星型模型 star schema.
但是一个维度可以基于超过一个表,通过定义良好的路径连接这些表到事实表上,这种维度称为雪花,使用 操作符定义,例如:
<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。我们需要 元素嵌套。
看上去表的排列很复杂,但实际上通过产品表关联,可以减少数据量。