我正在尝试为Mondrian服务器创建我的第一个olap立方体架构。 我想出了一个视图作为一个事实表,有几个连接将外键放入其中,让我们说它看起来像这样:
SELECT call.id, record.user, topic.id, session.id, user.id, session.end, session.start FROM calls call
LEFT JOIN call_records record ON (record.call_id = call.id)
LEFT JOIN topis topic ON (topic.id = record.topic_id)
LEFT JOIN login_sessions session ON (record.session_id = session.id)
LEFT JOIN users user ON (session.user_id = user.id)
我还创建了一个名为Users
的维度,Topics
(还有一些,但我试图保持简单)并且一切正常并且我检索了所需的所有信息,除了摘要在主题或每个用户的工作时间。
我不能只对session.end - session.start
求和,因为会话表已连接且同一会话多次出现。
另外,我不认为我按照我应该的方式这样做。
你能帮我正确地做吗? 感谢
答案 0 :(得分:1)
在规范化数据集上创建OLAP模型通常是不好的做法。您应该阅读有关OLAP系统的非规范化模型以及如何利用ETL / ELT技术来创建这些模型。
有很多文献可以帮助你。我建议熟悉OLAP'明星'模式和ETL工具。