首页 > 解决方案 > 列出对历史数据库中记录的更改

问题描述

我们有一个自制的硬件数据库(类似于 CMDB),其中有许多安排好的内务任务,收拾东西。每个硬件项目都有一个状态 - 为简单起见,我们说:活动;不活动;仓库。

每时每刻,我们都会看到“活跃”机器的数量激增,我们无法追踪是哪个家务管理任务导致了这种情况。

我编写了一个小脚本,每天晚上运行,它拍摄我们感兴趣的特定字段(硬件的标准名称和状态)的快照,并每晚将它们附加到第二个“趋势”数据库中,并带有日期戳,但是我不知道如何查询第二个数据库以生成状态已更改或更改为状态“活动”并指示日期的记录列表。

(一旦我们有了这个列表,当我们得到一个大的跳跃时,我们可以去查看各个记录,看看是什么家务任务导致了这个变化。)

有人对我可能用来尝试检查的 SQL 查询有任何想法吗?

非常感谢您的评论!

(目前我正在使用 sqlite3,但计划长期迁移到 Oracle。我正在使用 Python 3.7 脚本进行夜间转储)

标签: sql

解决方案


我设法做到了。为了记录以防万一有人感兴趣,我创建了两个 sql 查询:

select * from Trends_Database where (
Machine_Name in (select Max(Machine_Name) from Trends_Database group by Machine_Name) AND
(Status LIKE 'Deployed') AND
(date(`Date of Snapshot`) == date('now')))

select * from Trends_Database where (
Machine_Name in (select Max(Machine_Name) from Trends_Database group by Machine_Name) AND
(Status NOT LIKE 'Deployed') AND
(date(`Date of Snapshot`) == date('now','-1 day'))

我将这些读入了几个 Pandas 数据帧并取了两者的交集。

我从这里得到了它的骨头


推荐阅读