sql - 列出对历史数据库中记录的更改
问题描述
我们有一个自制的硬件数据库(类似于 CMDB),其中有许多安排好的内务任务,收拾东西。每个硬件项目都有一个状态 - 为简单起见,我们说:活动;不活动;仓库。
每时每刻,我们都会看到“活跃”机器的数量激增,我们无法追踪是哪个家务管理任务导致了这种情况。
我编写了一个小脚本,每天晚上运行,它拍摄我们感兴趣的特定字段(硬件的标准名称和状态)的快照,并每晚将它们附加到第二个“趋势”数据库中,并带有日期戳,但是我不知道如何查询第二个数据库以生成状态已更改或更改为状态“活动”并指示日期的记录列表。
(一旦我们有了这个列表,当我们得到一个大的跳跃时,我们可以去查看各个记录,看看是什么家务任务导致了这个变化。)
有人对我可能用来尝试检查的 SQL 查询有任何想法吗?
非常感谢您的评论!
(目前我正在使用 sqlite3,但计划长期迁移到 Oracle。我正在使用 Python 3.7 脚本进行夜间转储)
解决方案
我设法做到了。为了记录以防万一有人感兴趣,我创建了两个 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 数据帧并取了两者的交集。
推荐阅读
- javascript - 如何使用 javascript 获取此 json 数据?
- rxjs - 如何让我的 observable 具有用于 NGRX 效果的值
- python - 为什么 Tesseract OCR 没有捕获正确的输出?如何解决?
- microsoft-edge - 使用组策略时,Edge PWA 未应用桌面快捷方式名称和图标
- javascript - 在 textarea 输入上的 Jest 测试写入
- java - Micronaut Redis 生菜缓存有条件地启用
- javascript - 如何在没有位置的情况下将一个 div 重叠在另一个 div 上
- .net-core - .NET Core,更改数据库设置
- google-apps-script - 在谷歌日历中使用安排会议后如何获取当前事件的会议数据
- python - python for循环中的排序函数不重复