如何解决从事实表中删除重复项以正确计算度量
我对数据仓库和维度建模非常陌生。对于 uni 项目,我从一个数据库开始,我需要将其转变为数据仓库以进行分析。为了得到一个干净的星型模式,我不得不将几个表非规范化为 1 个事实表。这样做的缺点是冗余量。
以下是来自事实表的部分数据:
一个航次由多个货件组成,一个货件可以由多个不同的物品组成。在此示例中,货件 1 的集装箱 1-2000 包含物品 3,而集装箱 2001-5000 包含物品 1。显然,该货件的集装箱总数为 5000。但是,出于数据分析的目的,我需要计算每次航行的集装箱总量。这给当前的事实表带来了一个问题,因为我对每个不同的项目都有一个记录。所以对于航次 1,实际总数应该是 9200,但由于重复,我最终会得到 19400,导致错误的度量。
我需要找到一种方法来消除计算中的重复项,但我找不到这样做的方法。任何帮助将不胜感激。
解决方法
您需要做的是按您的货件(CTE、inner query、temp table 等)分组以获得每次货件的集装箱数量,然后按您的航次分组获取每次航行的集装箱数量。
这是一个带有内部查询的示例:
SELECT voyage_id,SUM(num_ship_containers) AS num_voyage_containers
FROM (
SELECT voyage_id,shipment_id,MAX(container_end) AS num_ship_containers
FROM ShippingWarehouse
GROUP BY voyage_id,shipment_id
) AS ship_data
GROUP BY voyage_id;
voyage_id | num_voyage_containers |
---|---|
1 | 9200 |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。