我们正在从Microsoft的Analysis Services(SSAS)迁移到HP Vertica数据库作为我们的OLAP解决方案。部分原因是将查询语言从MDX更改为SQL。我们有一个自定义MDX查询生成器,允许其他人通过指定所需的维度和事实(输出)通过api或用户界面查询数据。生成的MDX查询没问题,我们也没有必要手动处理连接。
但是,现在我们正在使用SQL语言,因为我们将数据保存在不同的事实表中,所以我们需要找到一种如何使用相同的维度和事实原语生成这些查询的方法。
EG。如果用户想要查看客户名称以及多个销售,我们可能会收到请求:
dimensions: { 'client_name' }
facts: { 'total_number_of_sales' }
并生成如下查询:
select clients.name, sum(sales.total)
from clients
join sales on clients.id = sales.client_id
group by 1
而且它很快变得更加复杂。
我正在考虑基于图的解决方案,它将存储维度和事实表之间的关系,我可以通过查找图中节点之间的最短路径来构建所需的连接。
我非常感谢有关此主题的任何信息,包括我应该使用的任何关键字,以寻找解决此类问题的解决方案或可以解决此问题的第三方产品。我试过去寻找它,但问题却完全不同。
答案 0 :(得分:1)
您可以使用免费的Mondrian OLAP引擎,该引擎可以在关系数据库(RDBMS)的顶部执行以MDX语言编写的查询。
对于报告,您可以在蒙德里安OLAP上尝试Saiku或Pentaho BI server。