我尝试在Amazon Redshift中建立星系模式。我从所有尺寸开始,并通过一些解决方法使它们与SCD2-Kimball风格一起使用。
现在,我正在尝试使某些事实表正常工作。我们公司中的事实计算起来非常复杂,因此我对每个KPI都做了一个“观察”。我试图以一种简单的方式来说明它,所以您也许可以通过一个简单的示例来帮助我解决问题:假设这些是3种不同的视图,请命名它们:他们已经按时间总结了。
我现在想要实现的是将它们全部合并到一个大的事实表中,该表包含所有这三个信息。但是我真的不知道该怎么做:
如果您能帮助我解决这个问题,那将很好。提前非常感谢。
我不确定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
表之间有任何关系吗?我假设time
和customer
列是外键,但是假设如果您还有一个具有相同值的数据,那么您的选择将是重复的。如果您没有相同值的数据,则可以使用以下语句:
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