<?xml version="1.0" encoding="UTF-8"?><oembed><type>video</type><version>1.0</version><html>&lt;iframe src=&quot;https://www.loom.com/embed/f8f0d069df7b4dfa8f30e7615bfe29e1&quot; frameborder=&quot;0&quot; width=&quot;1768&quot; height=&quot;1326&quot; webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;/iframe&gt;</html><height>1326</height><width>1768</width><provider_name>Loom</provider_name><provider_url>https://www.loom.com</provider_url><thumbnail_height>1326</thumbnail_height><thumbnail_width>1768</thumbnail_width><thumbnail_url>https://cdn.loom.com/sessions/thumbnails/f8f0d069df7b4dfa8f30e7615bfe29e1-00001.gif</thumbnail_url><duration>258</duration><title>Monitor Background Jobs</title><description>WITH
--FILTER by an INTERVAL or a START timestamp
vars AS (SELECT NOW() AS now_dt, NOW() - INTERVAL &apos;4 hours&apos; AS start, NOW()),
--vars AS (SELECT NOW() AS now_dt, TO_TIMESTAMP(&apos;2021-11-23 12:05:00&apos;, &apos;YYYY-MM-DD hh24:mi:ss&apos;)::timestamp without time zone at time zone &apos;EDT&apos; AS start, NOW()),
all_jobs_raw AS (
    SELECT name, state, startedon, createdon, completedon, data FROM pgboss.job
    --UNION SELECT name, state, startedon, createdon, completedon, data FROM pgboss.archive
),
all_jobs AS (
    SELECT
        CASE
            WHEN name = &apos;automaticSubscription&apos; AND data-&gt;&gt;&apos;profileId&apos; IS NULL THEN &apos;autoSub - ByDataSource&apos;
            WHEN name = &apos;automaticSubscription&apos; AND data-&gt;&gt;&apos;profileId&apos; IS NOT NULL THEN &apos;autoSub - ByUser&apos;
            WHEN name LIKE &apos;nativeSqlProfileRefresh_Redshift%&apos; THEN &apos;nativeSqlProfileRefresh_Redshift%&apos;
            ELSE name
        END AS name, state, startedon, completedon
    FROM all_jobs_raw INNER JOIN vars ON TRUE
    WHERE all_jobs_raw.createdon &gt; vars.start
    AND name NOT LIKE &apos;\_\_%&apos; AND name NOT ILIKE &apos;cleanUp%&apos; AND name NOT ILIKE &apos;initiateScheduled%&apos;
    AND name NOT IN (&apos;clearMaxTTLTokens&apos;, &apos;dataSourceTest&apos;, &apos;loadIamGroups&apos;, &apos;visibilitySchemaUpdate&apos;, &apos;checkInWithLicenseServer&apos;) -- ignore list
    --AND (name ILIKE &apos;%redshift%&apos; OR name ILIKE &apos;%bulk%&apos;) -- adjust to filter down to specific jobs
),
distinct_jobs AS ( SELECT DISTINCT name FROM all_jobs),
completed_jobs AS (
    SELECT
        name,
        COUNT(*) AS total,
        AVG(completedon - startedon) AS average_time,
        MIN(completedon) AS min_completedon,
        MAX(completedon) AS max_completedon
    FROM all_jobs
    WHERE state = &apos;completed&apos;
    GROUP BY name),
active_jobs AS ( SELECT name, count(*) AS total FROM all_jobs WHERE state = &apos;active&apos; GROUP BY name ),
queued_jobs AS ( SELECT name, count(*) AS total FROM all_jobs WHERE state = &apos;created&apos; GROUP BY name ),
expired_jobs AS ( SELECT name, count(*) AS total FROM all_jobs WHERE state = &apos;expired&apos; GROUP BY name ),
failed_jobs AS ( SELECT name, count(*) AS total FROM all_jobs WHERE state = &apos;failed&apos; GROUP BY name )
SELECT
    distinct_jobs.name as &quot;Job Name&quot;,
    --vars.start AT TIME ZONE &apos;EDT&apos; AS &quot;Filter EDT&quot;,
    completed_jobs.min_completedon AT TIME ZONE &apos;EDT&apos; AS &quot;Earliest Job EDT&quot;,
    --completed_jobs.max_completedon AT TIME ZONE &apos;EDT&apos; AS &quot;Latest Job EDT&quot;,
    TO_CHAR(completed_jobs.max_completedon - completed_jobs.min_completedon, &apos;HH24:MI:SS.MS&apos; ) AS &quot;Duration&quot;,
    TO_CHAR(completed_jobs.total, &apos;FM9,999,999,999&apos;) AS &quot;# Completed&quot;,
    TO_CHAR(completed_jobs.average_time, &apos;MI:SS.MS&apos;) AS &quot;Avg Time&quot;,
    TO_CHAR(active_jobs.total, &apos;FM9,999,999,999&apos;) AS &quot;# Active&quot;,
    TO_CHAR(queued_jobs.total, &apos;FM9,999,999,999&apos;) AS &quot;# Queued&quot;,
    TO_CHAR(expired_jobs.total, &apos;FM9,999,999,999&apos;) AS &quot;# Expired&quot;,
    TO_CHAR(failed_jobs.total, &apos;FM9,999,999,999&apos;) AS &quot;# Failed&quot;,
    ((queued_jobs.total / active_jobs.total) * completed_jobs.average_time) AS &quot;Until Complete&quot;
    --(vars.now_dt + ((queued_jobs.total / active_jobs.total) * completed_jobs.average_time)) AT TIME ZONE &apos;EDT&apos; AS &quot;When EDT&quot;
FROM distinct_jobs
INNER JOIN vars ON TRUE
LEFT OUTER JOIN completed_jobs ON distinct_jobs.name = completed_jobs.name
LEFT OUTER JOIN active_jobs ON distinct_jobs.name = active_jobs.name
LEFT OUTER JOIN queued_jobs ON distinct_jobs.name = queued_jobs.name
LEFT OUTER JOIN expired_jobs ON distinct_jobs.name = expired_jobs.name
LEFT OUTER JOIN failed_jobs ON distinct_jobs.name = failed_jobs.name
ORDER BY queued_jobs.total DESC NULLS LAST;</description></oembed>