Amazon Redshift中的合并事实表

问题描述 投票:0回答:2

我尝试在Amazon Redshift中建立星系模式。我从所有尺寸开始,并通过一些解决方法使它们与SCD2-Kimball风格一起使用。

现在,我正在尝试使某些事实表正常工作。我们公司中的事实计算起来非常复杂,因此我对每个KPI都做了一个“观察”。我试图以一种简单的方式来说明它,所以您也许可以通过一个简单的示例来帮助我解决问题:假设这些是3种不同的视图,请命名它们:他们已经按时间总结了。

enter image description here 事实收入

enter image description here 事实许可证

enter image description here 事实成本

我现在想要实现的是将它们全部合并到一个大的事实表中,该表包含所有这三个信息。但是我真的不知道该怎么做:

enter image description here fact_all

如果您能帮助我解决这个问题,那将很好。提前非常感谢。

plsql amazon-redshift data-warehouse fact
2个回答
2
投票

我不确定redshift支持什么语法,但这是标准模式

SELECT  
Time,Customer,
MAX(Revenue) As Revenue, MAX(Licences) As Licences,MAX(Costs) As Costs
FROM 
(
SELECT Time,Customer,Revenue,NULL as Licences,NULL As Costs
FROM FactRevenue
UNION ALL
SELECT Time,Customer,NULL,Licences,NULL
FROM FactLicences
UNION ALL
SELECT Time,Customer,NULL,NULL,Costs
FROM FactLicences
) As MyTable
GROUP BY Time,Customer

0
投票

表之间有任何关系吗?我假设timecustomer列是外键,但是假设如果您还有一个具有相同值的数据,那么您的选择将是重复的。如果您没有相同值的数据,则可以使用以下语句:

select * from fact_revenue rev 
left join fact_licences li on li.time=rev.time and li.customer=rev.customer
left join fact_costs co on co.time=rev.time and co.customer =rev.customer
© www.soinside.com 2019 - 2024. All rights reserved.