我正在检查Google Big Query中的表是否每5分钟更新一次。我们在表中有一个DateTime字段,它从指定时间开始每5分钟获取一条记录。我必须得到表的开始时间(最后一条记录)并检查我们是否有从当前DateTime开始的最后10分钟的记录。在结果表中,对于每台机器,我应该有一个" yes"或"不"根据表是否每5分钟更新一次。
当前查询:
SELECT * FROM [Poll_20160505]
WHERE MachineName = 'P130'
ORDER BY DateTime DESC
当前输出:
MachineName DateTime
P130 2016-07-07 15:54:13.407
P130 2016-07-07 15:49:13.438
P130 2016-07-07 15:44:13.437
P130 2016-07-07 15:39:13.426
P130 2016-07-07 15:34:13.419
.
.
P130 2016-07-07 00:09:13.037
P130 2016-07-07 00:04:13.005
预期产出:
MachineName DateTime
P130 Yes
编辑:
我应该"是"如果表中当前时间戳和最新时间戳之间的差异大于8分钟(bcz表每5分钟更新一次,给出3分钟的缓冲区)。
从上表中,我必须找到当前时间戳与第一条记录的时间戳之间的差异(2016-07-07 15:54:13.407),如果它大于8分钟,那么我应该有一个"不",否则我应该"是"。
答案 0 :(得分:0)
我希望,它就像下面那样简单
SELECT
MachineName,
CASE
WHEN TIMESTAMP_TO_SEC(CURRENT_TIMESTAMP()) - TIMESTAMP_TO_SEC(recentDateTime) < 8 * 60 THEN "Yes"
ELSE "No"
END AS Healthy
FROM (
SELECT MachineName, MAX(DateTime) AS recentDateTime
FROM YourTable
GROUP BY MachineName
)