Files
AWatch-rus/clickhouse-workforce/clickhouse/init/04_quality_views.sql
T

106 lines
2.8 KiB
SQL

CREATE OR REPLACE VIEW aw_workforce.v_workforce_productivity_daily AS
SELECT
event_date,
branch,
department,
activity_type,
category,
productivity_class,
sum(duration_sec) AS duration_sec,
sum(event_count) AS event_count,
sum(unknown_subject_events) AS unknown_subject_events,
sum(unknown_category_events) AS unknown_category_events
FROM aw_workforce.agg_workforce_productivity_hourly
GROUP BY
event_date,
branch,
department,
activity_type,
category,
productivity_class;
CREATE OR REPLACE VIEW aw_workforce.v_workforce_unknown_subjects AS
SELECT
host_name,
user_login,
count() AS events,
sum(duration_sec) AS duration_sec
FROM aw_workforce.aw_window_events
WHERE dictGetUInt8OrDefault(
'aw_workforce.dict_workstation_user',
'is_active',
(host_name, user_login),
0
) != 1
OR dictGetStringOrDefault(
'aw_workforce.dict_workstation_user',
'employee_name',
(host_name, user_login),
''
) = ''
GROUP BY
host_name,
user_login
ORDER BY duration_sec DESC;
CREATE OR REPLACE VIEW aw_workforce.v_workforce_unknown_processes AS
SELECT
process_name,
count() AS events,
sum(duration_sec) AS duration_sec
FROM aw_workforce.aw_window_events
WHERE dictGetUInt8OrDefault(
'aw_workforce.dict_application_category',
'is_active',
process_name,
0
) != 1
OR dictGetStringOrDefault(
'aw_workforce.dict_application_category',
'category',
process_name,
''
) IN ('', 'unknown')
GROUP BY process_name
ORDER BY duration_sec DESC;
CREATE OR REPLACE VIEW aw_workforce.v_workforce_unknown_domains AS
WITH
lowerUTF8(
domain(if(position(url, '://') = 0, concat('http://', url), url))
) AS domain_name
SELECT
domain_name,
count() AS events,
sum(duration_sec) AS duration_sec
FROM aw_workforce.aw_browser_events
WHERE domain_name != ''
AND (
dictGetUInt8OrDefault(
'aw_workforce.dict_domain_category',
'is_active',
domain_name,
0
) != 1
OR dictGetStringOrDefault(
'aw_workforce.dict_domain_category',
'category',
domain_name,
''
) IN ('', 'unknown')
)
GROUP BY domain_name
ORDER BY duration_sec DESC;
CREATE OR REPLACE VIEW aw_workforce.v_workforce_unknown_quality_daily AS
SELECT
event_date,
sum(event_count) AS events,
sum(unknown_subject_events) AS unknown_subject_events,
round(unknown_subject_events / nullIf(events, 0), 4) AS unknown_subject_ratio,
sum(unknown_category_events) AS unknown_category_events,
round(unknown_category_events / nullIf(events, 0), 4) AS unknown_category_ratio
FROM aw_workforce.agg_workforce_productivity_hourly
GROUP BY event_date
ORDER BY event_date DESC;