首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用的ETL

使用的ETL
EN

Stack Overflow用户
提问于 2018-10-08 04:51:34
回答 2查看 442关注 0票数 0

我在PostgreSQL表中有以下数据。这是每小时的数据,有几个小时没有。我想为每一个丢失的小时数据插入空值。

示例:我们丢失了9/9/2018 22:00的数据。我不知道如何在SQL中做到这一点。

代码语言:javascript
复制
time             id     
----------------------------------------------------
9/9/2018 16:00  22d52ac5-6fdc-42c8-8a0e-0a7570ed6b92        
9/9/2018 17:00  6c6bc938-4a46-4bf2-a81e-81ded6f9bdb6        
9/9/2018 18:00  67c85ca5-7f85-49a1-8eb2-af6307d5277b        
9/9/2018 19:00  0d58a4d7-30ec-429c-9eb8-0f490b18a020        
9/9/2018 19:00  81870c59-410c-4d1b-8178-e5cc3f3fc4e3        
9/9/2018 19:00  a06697ee-88e6-4c26-adbb-4b59c3fe95b3        
9/9/2018 21:00  ea8a5bf8-18ff-4506-ad11-07df86c162ab        
9/10/2018 8:00  9c08ae16-3f5b-4b36-97ac-9910c9a8b6b3        
9/10/2018 8:00  fbb18c1b-92db-495c-87d0-09af9fb3d2ab        
9/10/2018 8:00  bf81644f-8ea1-474e-8fcc-26e1ff94c436        
9/10/2018 8:00  1a6b7ca3-3728-4ed0-b387-f03c46b6d597        
9/10/2018 11:00 24fbd4aa-d745-4994-a14d-93443880bdf7        
9/10/2018 15:00 7ac9376d-aee9-4c22-a794-315973aab597

如果可能的话,有人能给我提个建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-08 06:04:36

在左侧做一个左外连接:

代码语言:javascript
复制
generate_series('2018-09-09 16:00:00'::timestamptz,
                '2018-09-10 15:00:00'::timestamptz,
                '1 hour'::interval)
票数 3
EN

Stack Overflow用户

发布于 2018-10-08 05:47:26

我想说:

如果无法在应用程序中通过软件实现添加此功能,则可以在添加新的插入记录之前将其作为触发器添加到数据库中。

我不知道您使用的是哪个数据库,但它允许您在这里链接:

这个想法很简单:

  1. 插入前检查记录。
  2. 计算要插入的新记录与数据库中的最后一条记录之间的差异。
  3. 添加您正在说的丢失的记录。
  4. 添加新记录。

我强烈建议你不要这样做,并在你的前端或后端应用中解决这个问题。在您的应用程序中可能包含从数据库收集所有这些数据的函数,可以通过包含您正在说的这一项来扩展其功能。这样,您就不会向存储系统添加不相关的数据。您不会将一些空间用作零,再加上数据库管理、性能等的增量。

希望这能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52695566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档