Pentaho 使用Mondrian按组筛选时重复
我正在尝试创建一个蒙德里安模式,用于塞库语。架构的其余部分工作正常,但主筛选器不正常。 我试过几种方法来实现这一点,但到目前为止,我总是得到重复的 只有两个表可以重复这个问题,我们称之为Pentaho 使用Mondrian按组筛选时重复,pentaho,mondrian,star-schema,Pentaho,Mondrian,Star Schema,我正在尝试创建一个蒙德里安模式,用于塞库语。架构的其余部分工作正常,但主筛选器不正常。 我试过几种方法来实现这一点,但到目前为止,我总是得到重复的 只有两个表可以重复这个问题,我们称之为fact\u table和user\u group。fact\u表包含用户id和度量值,例如: user_id|amount 1 |10 2 |15 3 |17 user\u group表包含user\u id及其所属的组。如果一个用户属于多个组,它将有多行 user_id|gro
fact\u table
和user\u group
。fact\u表
包含用户id和度量值,例如:
user_id|amount
1 |10
2 |15
3 |17
user\u group
表包含user\u id
及其所属的组。如果一个用户属于多个组,它将有多行
user_id|group_id
1 |100
1 |200
2 |100
每次对组100和200运行查询时,我都会得到以下不正确的数据:
user_id|amount
1 |20
2 |15
请注意,用户1的金额是重复的,因为它属于两个组。问题是维度不希望id重复。有什么方法可以做到这一点吗?您的数据仓库架构似乎没有遵循规则。维度表
user\u group
应仅包含一个具有唯一值的键列(user\u id
列不足)
更多可能的解决方案开始发挥作用:
1)将组id
列添加到事实表
(导致重复的金额记录)。
事实表:
<强> 2)考虑<代码> FaseTABLE < /COD>和
您可以用代理键替换
#null
值。我建议阅读这本关于数据仓库建模的书,以了解有关星型模式概念和代理键的更多信息。非常感谢您的回答。我还需要做一些测试来确保它能正常工作。但应该有其他方法不涉及将维度数据移动到事实表。
user_id | group_id | amount
1 | 100 | 10
1 | 200 | 10
2 | 100 | 15
3 | #null | 17
new_fact_key | user_id | group_id
1 | 1 | 100
2 | 1 | 200
3 | 2 | 100
4 | 3 | #null
user_id|amount
1 |10
2 |15
3 |17
group_id
100
200
100