@@ -156,7 +156,7 @@ def refresh_gridsite():
156156 Site,
157157 max(LatestEndTime) AS LatestPublish
158158 FROM VSuperSummaries
159- WHERE LatestEndTime > DATE_SUB( NOW(), INTERVAL 1 YEAR)
159+ WHERE LatestEndTime >= NOW() - INTERVAL 1 YEAR
160160 GROUP BY 1;
161161 """
162162 fetchset = VSuperSummaries .objects .using ('grid' ).raw (sql_query )
@@ -176,31 +176,30 @@ def refresh_gridsite():
176176def refresh_cloudsite ():
177177 try :
178178 sql_query = """
179- SELECT
180- b.SiteName,
181- COUNT(DISTINCT VMUUID) as VMs,
182- CloudType,
183- b.UpdateTime
184- FROM(
179+ WITH ranked AS (
185180 SELECT
186181 SiteName,
187- MAX(UpdateTime) AS latest
182+ CloudType,
183+ UpdateTime,
184+ ROW_NUMBER() OVER (
185+ PARTITION BY SiteName
186+ ORDER BY UpdateTime DESC
187+ ) AS rn
188188 FROM VAnonCloudRecords
189- WHERE UpdateTime > DATE_SUB(NOW(), INTERVAL 1 YEAR)
190- GROUP BY SiteName
189+ WHERE UpdateTime >= NOW() - INTERVAL 6 MONTH
191190 )
192- AS a
193- INNER JOIN VAnonCloudRecords
194- AS b
195- ON b.SiteName = a.SiteName AND b.UpdateTime = a.latest
196- GROUP BY SiteName;
191+ SELECT
192+ SiteName,
193+ CloudType,
194+ UpdateTime
195+ FROM ranked
196+ WHERE rn = 1;
197197 """
198198 fetchset = VAnonCloudRecord .objects .using ('cloud' ).raw (sql_query )
199199
200200 for f in fetchset :
201201 CloudSite .objects .update_or_create (
202202 defaults = {
203- 'Vms' : f .VMs ,
204203 'Script' : f .CloudType ,
205204 'updated' : f .UpdateTime
206205 },
@@ -305,53 +304,82 @@ def refresh_BenchmarksBySubmitHost_from_view(view_name):
305304 try :
306305 if view_name == 'VSummaries' :
307306 sql_query = f"""
308- SELECT DISTINCT v.Site, v.SubmitHost, v.ServiceLevelType, v.ServiceLevel, v.UpdateTime AS LatestPublish
309- FROM { view_name } AS v
310- JOIN (
311- SELECT Site, SubmitHost, MAX(UpdateTime) AS LatestPublish
312- FROM { view_name }
313- WHERE UpdateTime > DATE_SUB(NOW(), INTERVAL 3 MONTH)
314- GROUP BY Site, SubmitHost, ServiceLevelType, ServiceLevel
315- ) AS latest
316- ON v.Site = latest.Site
317- AND v.SubmitHost = latest.SubmitHost
318- AND v.UpdateTime = latest.LatestPublish
319- WHERE v.UpdateTime > DATE_SUB(NOW(), INTERVAL 3 MONTH);
320- """
307+ WITH latest AS (
308+ SELECT
309+ Site,
310+ SubmitHost,
311+ ServiceLevelType,
312+ ServiceLevel,
313+ UpdateTime,
314+ ROW_NUMBER() OVER (
315+ PARTITION BY Site, SubmitHost
316+ ORDER BY Year DESC, Month DESC, UpdateTime DESC
317+ ) AS rn
318+ FROM VSummaries
319+ WHERE UpdateTime >= NOW() - INTERVAL 2 MONTH
320+ )
321+ SELECT
322+ Site,
323+ SubmitHost,
324+ ServiceLevelType,
325+ ServiceLevel,
326+ UpdateTime AS LatestPublish
327+ FROM latest
328+ WHERE rn = 1;
329+ """
321330 elif view_name == 'VJobRecords' :
322331 sql_query = f"""
323- SELECT DISTINCT v.Site, v.SubmitHost, v.ServiceLevelType, v.ServiceLevel, v.UpdateTime AS LatestPublish
324- FROM { view_name } AS v
325- JOIN (
326- SELECT Site, SubmitHost, MAX(UpdateTime) AS LatestPublish
327- FROM { view_name }
328- WHERE EndTime > DATE_SUB(NOW(), INTERVAL 3 MONTH)
329- AND UpdateTime > DATE_SUB(NOW(), INTERVAL 3 MONTH)
330- GROUP BY Site, SubmitHost, ServiceLevelType, ServiceLevel
331- ) AS latest
332- ON v.Site = latest.Site
333- AND v.SubmitHost = latest.SubmitHost
334- AND v.UpdateTime = latest.LatestPublish
335- WHERE v.EndTime > DATE_SUB(NOW(), INTERVAL 3 MONTH)
336- AND v.UpdateTime > DATE_SUB(NOW(), INTERVAL 3 MONTH);
337- """
332+ WITH latest AS (
333+ SELECT
334+ Site,
335+ SubmitHost,
336+ ServiceLevelType,
337+ ServiceLevel,
338+ UpdateTime,
339+ ROW_NUMBER() OVER (
340+ PARTITION BY Site, SubmitHost
341+ ORDER BY EndTime DESC, UpdateTime DESC
342+ ) AS rn
343+ FROM VJobRecords
344+ WHERE EndTime >= NOW() - INTERVAL 2 MONTH
345+ AND UpdateTime >= NOW() - INTERVAL 2 MONTH
346+ )
347+ SELECT
348+ Site,
349+ SubmitHost,
350+ ServiceLevelType,
351+ ServiceLevel,
352+ UpdateTime AS LatestPublish
353+ FROM latest
354+ WHERE rn = 1;
355+ """
338356 elif view_name == 'VNormalisedSummaries' :
339357 sql_query = f"""
340- SELECT DISTINCT v.Site, v.SubmitHost, v.ServiceLevelType, ROUND(v.NormalisedWallDuration / v.WallDuration, 3) AS ServiceLevel, v.UpdateTime AS LatestPublish
341- FROM { view_name } AS v
342- JOIN (
343- SELECT Site, SubmitHost, MAX(UpdateTime) AS LatestPublish, ROUND(NormalisedWallDuration / WallDuration, 3) AS ServiceLevel
344- FROM { view_name }
345- WHERE UpdateTime > DATE_SUB(NOW(), INTERVAL 3 MONTH)
346- AND WallDuration > 0
347- GROUP BY Site, SubmitHost, ServiceLevelType, ServiceLevel
348- ) AS latest
349- ON v.Site = latest.Site
350- AND v.SubmitHost = latest.SubmitHost
351- AND v.UpdateTime = latest.LatestPublish
352- WHERE v.UpdateTime > DATE_SUB(NOW(), INTERVAL 3 MONTH)
353- AND v.WallDuration > 0;
354- """
358+ WITH latest AS (
359+ SELECT
360+ Site,
361+ SubmitHost,
362+ ServiceLevelType,
363+ NormalisedWallDuration,
364+ WallDuration,
365+ UpdateTime,
366+ ROW_NUMBER() OVER (
367+ PARTITION BY Site, SubmitHost
368+ ORDER BY Year DESC, Month DESC, UpdateTime DESC
369+ ) AS rn
370+ FROM VNormalisedSummaries
371+ WHERE UpdateTime >= NOW() - INTERVAL 2 MONTH
372+ AND WallDuration > 0
373+ )
374+ SELECT
375+ Site,
376+ SubmitHost,
377+ ServiceLevelType,
378+ ROUND(NormalisedWallDuration / WallDuration, 3) AS ServiceLevel,
379+ UpdateTime AS LatestPublish
380+ FROM latest
381+ WHERE rn = 1;
382+ """
355383 else :
356384 log .warning (f"Unknown view name: { view_name } " )
357385 return
0 commit comments