1.维度退化
维度退化是指对于简单的维度来说,不创建自己的维表,例如,下面的事实表:
product_id | time_id | payment_method | customer_id | store_id | item_count | dollars |
55 | 20040106 | Credit | 123 | 22 | 3 | $3.54 |
78 | 20040106 | Cash | 89 | 22 | 1 | $20.00 |
199 | 20040107 | ATM | 3 | 22 | 2 | $2.99 |
55 | 20040106 | Cash | 122 | 22 | 1 | $1.18 |
对于其中的维度支付方式,假设我们创建了一个维表,这个维表几乎是没有意义的。如果单独增加了这样一个维表,那么可能会导致一定的连接成本。(对于这个问题,我持有不同的看法,例如当这个维度是可被复用时,则这个维表是有意义的)
可以创建一个退化维度,声明一个不包括表的维度,mondrian会假设列来自事实表。看下面的例子:
|
在上面的实例中,因为没有join,Dimension维度的foreignKey属性不需要设置,Hierarchy元素没有
2.内联表
构造允许你在schema文件中定义数据集。必须声明列的名字,列的类型,以及一系列的行。作为
1 High 2 Medium 2 Low |
这和你的数据库中有下面的表是一样的效果。
id | desc |
1 | High |
2 | Medium |
3 | Low |
要指定某个列NULL值,对那个列忽略 ,列的值默认为空。
3.估计Level的势
元素允许指定可选的参数 "approxRowCount",指定这个参数可以改善性能,通过减少需要决定的level,层次和维度的势。通过连接到XMLA的Mondrian,可能会产生较大的影响。