检查表是否每五分钟更新一次

时间:2016-07-07 16:22:30

标签: sql google-bigquery

我正在检查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分钟,那么我应该有一个"不",否则我应该"是"。

1 个答案:

答案 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
)