Обновить timeBasedReport.sql
This commit is contained in:
+16
-12
@@ -46,17 +46,17 @@ checks AS (
|
|||||||
-- Только мониторимые хосты
|
-- Только мониторимые хосты
|
||||||
h.status = 0
|
h.status = 0
|
||||||
and h.host not like '%WiMAX'
|
and h.host not like '%WiMAX'
|
||||||
-- Исключаем оборудование, начинающееся на IRZ (любой регистр)
|
and h.host not like '%DP%'
|
||||||
-- AND UPPER(h.host) NOT LIKE 'IRZ%'
|
and h.host not like '%CO%'
|
||||||
-- Период: май 2026 года (измените под свои даты)
|
--and CAST(nullif(regexp_replace(hinv.notes, 'ОБЪЕКТ №\s*', '', 'g'),'') as INTEGER) = 6
|
||||||
--and hinv.notes = 'ОБЪЕКТ № 29'
|
and ((CAST(nullif(regexp_replace(hinv.notes, 'ОБЪЕКТ №\s*', '', 'g'),'') as INTEGER)
|
||||||
and CAST(nullif(regexp_replace(hinv.notes, 'ОБЪЕКТ №\s*', '', 'g'),'') as INTEGER)
|
in (1,2,4,5,8,9,11,12,14,23,24,25,27,28,29,30,31,32,34,35,36,38,39,40,41,42,43,44,45,46,48,49,50,51,53,54,55,57,58,60,62,63,64,65,66,67,68,69,70,75,76,77,81,82,84,85)
|
||||||
--between 1 and 85
|
|
||||||
in (1,2,4,5,8,9,11,12,14,24,25,27,28,29,30,31,32,34,35,36,38,40,41,42,43,44,45,46,48,49,50,51,53,54,55,57,58,60,62,63,64,65,66,67,68,69,70,76,77,81,82,84,85)
|
|
||||||
--AND hx.clock >= EXTRACT(EPOCH FROM TIMESTAMP '2026-06-01 00:00:00')
|
|
||||||
--AND hx.clock < EXTRACT(EPOCH FROM TIMESTAMP '2026-06-05 00:00:00')
|
|
||||||
AND TO_TIMESTAMP(hx.clock) >= to_date(${start_dt}, 'yyyymmdd') - interval '1 day'
|
AND TO_TIMESTAMP(hx.clock) >= to_date(${start_dt}, 'yyyymmdd') - interval '1 day'
|
||||||
AND TO_TIMESTAMP(hx.clock) <= to_date(${end_dt}, 'yyyymmdd') + interval '1 day'
|
AND TO_TIMESTAMP(hx.clock) <= to_date(${end_dt}, 'yyyymmdd') + interval '1 day' )
|
||||||
|
or (CAST(nullif(regexp_replace(hinv.notes, 'ОБЪЕКТ №\s*', '', 'g'),'') as INTEGER)
|
||||||
|
in (6,10,16,74,78)
|
||||||
|
AND TO_TIMESTAMP(hx.clock) >= to_date('20260709', 'yyyymmdd') - interval '1 day'
|
||||||
|
AND TO_TIMESTAMP(hx.clock) <= to_date(${end_dt}, 'yyyymmdd') + interval '1 day' ))
|
||||||
|
|
||||||
),
|
),
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ checks_with_prev AS (
|
|||||||
SELECT
|
SELECT
|
||||||
*,
|
*,
|
||||||
LAG(status) OVER (PARTITION BY host_name ORDER BY ts) AS prev_status,
|
LAG(status) OVER (PARTITION BY host_name ORDER BY ts) AS prev_status,
|
||||||
coalesce(lead(ts) OVER (PARTITION BY host_name ORDER BY ts), now()) AS next_ts
|
coalesce(lead(ts) OVER (PARTITION BY host_name ORDER BY ts), date_trunc('day', ts) + interval '1 day') AS next_ts
|
||||||
FROM checks
|
FROM checks
|
||||||
),
|
),
|
||||||
|
|
||||||
@@ -111,7 +111,11 @@ intervals AS (
|
|||||||
SUM(is_start) OVER (PARTITION BY host_name ORDER BY ts) AS interval_id
|
SUM(is_start) OVER (PARTITION BY host_name ORDER BY ts) AS interval_id
|
||||||
FROM status_changes
|
FROM status_changes
|
||||||
WHERE status IS NOT null
|
WHERE status IS NOT null
|
||||||
and date_trunc('day', ts) >= to_date(${start_dt}, 'yyyymmdd') and date_trunc('day', ts) <= to_date(${end_dt}, 'yyyymmdd')
|
and ((regexp_replace(object_number, 'ОБЪЕКТ №\s*', '', 'g')::INT in (6,10,16,74,78)
|
||||||
|
AND date_trunc('day', ts) >= to_date('20260709', 'yyyymmdd')
|
||||||
|
AND date_trunc('day', ts) <= to_date(${end_dt}, 'yyyymmdd'))
|
||||||
|
or (regexp_replace(object_number, 'ОБЪЕКТ №\s*', '', 'g')::INT not in (6,10,16,74,78) and date_trunc('day', ts) >= to_date(${start_dt}, 'yyyymmdd') and date_trunc('day', ts) <= to_date(${end_dt}, 'yyyymmdd')))
|
||||||
|
and ts <= now()
|
||||||
),
|
),
|
||||||
|
|
||||||
-- 5. Агрегируем каждый непрерывный интервал
|
-- 5. Агрегируем каждый непрерывный интервал
|
||||||
|
|||||||
Reference in New Issue
Block a user