在 Amazon Redshift 中合并事实表

Merging Fact-Tables in Amazon Redshift

我尝试在 Amazon Redshift 中构建 galaxy-schema。我从所有维度开始,通过一些变通方法让他们使用 SCD2 - Kimball 风格。

现在我正试图让一些事实 table 起作用。我们公司的事实计算起来非常复杂,所以每个KPI我都做了一个"view"。我试着用一种简单的方式来说明它,所以你可以通过一个简单的例子帮助我解决我的问题:让我们假设这些是 3 个不同的视图,让它们命名: 已经按时间总结了。

fact_revenue

fact_licenses

fact_costs

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

fact_all

如果你能帮我解决这个问题,我会很高兴。非常感谢您。

表格之间有关系吗?我假设 timecustomer 列是外键,但可以说如果您有更多具有相同值的数据,您的 select 将是重复的。如果您没有具有相同值的数据,您可以使用此语句:

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

我不确定 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