From 5659bc4afabcd9975363929f73d3103978da820d Mon Sep 17 00:00:00 2001 From: Ruslan Date: Wed, 19 Mar 2025 15:36:16 +0300 Subject: [PATCH] =?UTF-8?q?+main=5Fdashboard.recruitment=5Fcampaign(m=5Fc)?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B0=20=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B8=D0=B7=203=D1=85=20?= =?UTF-8?q?=D0=B1=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mil_com/job_recruitments_milcom.hwf | 60 +++-- ...in_dashboard.recruitment_campaign(m_c).hwf | 167 ++++++++++++ .../m_d.rec_cam(m_c)_to_decision_service.hpl | 246 ++++++++++++++++++ .../m_d.rec_cam(m_c)_to_person_registry.hpl | 127 +++++++++ ...m_d.rec_cam(m_c)_to_subpoena_registry.hpl} | 139 ++++------ 5 files changed, 636 insertions(+), 103 deletions(-) create mode 100644 v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c).hwf create mode 100644 v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c)/m_d.rec_cam(m_c)_to_decision_service.hpl create mode 100644 v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c)/m_d.rec_cam(m_c)_to_person_registry.hpl rename v1_apache-hop dash mapping/mil_com/{main_dashboard.recruitment_campaign(m_c).hpl => main_dashboard.recruitment_campaign(m_c)/m_d.rec_cam(m_c)_to_subpoena_registry.hpl} (75%) diff --git a/v1_apache-hop dash mapping/mil_com/job_recruitments_milcom.hwf b/v1_apache-hop dash mapping/mil_com/job_recruitments_milcom.hwf index 1ecf2eb..ed14b08 100644 --- a/v1_apache-hop dash mapping/mil_com/job_recruitments_milcom.hwf +++ b/v1_apache-hop dash mapping/mil_com/job_recruitments_milcom.hwf @@ -140,8 +140,8 @@ N Y N - 1248 - 800 + 1392 + 640 @@ -962,15 +962,36 @@ WHERE recording_date = current_date 1840 + + main_dashboard.recruitment_campaign(m_c).hwf + + WORKFLOW + + N + N + N + Y + ${PROJECT_HOME}/mil_com/main_dashboard.recruitment_campaign(m_c).hwf + Nothing + + + ARR_MC + ARRAY_MIL_COM + + Y + + Y + local + N + N + Y + N + 1248 + 800 + + - - main_dashboard.recruitment_campaign(m_c).hpl - Success 2 - Y - Y - N - main_dashboard.total_registered(m_c).hpl Success 3 @@ -1118,13 +1139,6 @@ WHERE recording_date = current_date Y N - - SQL main_dashboard.recruitment_campaign - main_dashboard.recruitment_campaign(m_c).hpl - Y - Y - Y - array_recruitments.hpl SQL main_dashboard.total_registered @@ -1293,6 +1307,20 @@ WHERE recording_date = current_date Y Y + + SQL main_dashboard.recruitment_campaign + main_dashboard.recruitment_campaign(m_c).hwf + Y + N + Y + + + main_dashboard.recruitment_campaign(m_c).hwf + Success 2 + Y + Y + N + diff --git a/v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c).hwf b/v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c).hwf new file mode 100644 index 0000000..24a7405 --- /dev/null +++ b/v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c).hwf @@ -0,0 +1,167 @@ + + + main_dashboard.recruitment_campaign(m_c) + Y + + + + - + 2025/03/19 10:26:06.313 + - + 2025/03/19 10:26:06.313 + + + + + Start + + SPECIAL + + 1 + 12 + 60 + 0 + 0 + N + 0 + 1 + N + 272 + 256 + + + + Success + + SUCCESS + + N + 1376 + 256 + + + + m_d.rec_cam(m_c)_to_person_registry.hpl + + PIPELINE + + N + N + N + N + N + Y + ${PROJECT_HOME}/mil_com/main_dashboard.recruitment_campaign(m_c)/m_d.rec_cam(m_c)_to_person_registry.hpl + Basic + + + ARR_MC + ARRAY_MIL_COM + + Y + + Y + local + N + N + Y + N + 512 + 256 + + + + m_d.rec_cam(m_c)_to_subpoena_registry.hpl + + PIPELINE + + N + N + N + N + N + Y + ${PROJECT_HOME}/mil_com/main_dashboard.recruitment_campaign(m_c)/m_d.rec_cam(m_c)_to_subpoena_registry.hpl + Basic + + + ARR_MC + ARRAY_MIL_COM + + Y + + Y + local + N + N + Y + N + 832 + 256 + + + + m_d.rec_cam(m_c)_to_decision_service.hpl + + PIPELINE + + N + N + N + N + N + Y + ${PROJECT_HOME}/mil_com/main_dashboard.recruitment_campaign(m_c)/m_d.rec_cam(m_c)_to_decision_service.hpl + Basic + + + ARR_MC + ARRAY_MIL_COM + + Y + + Y + local + N + N + Y + N + 1136 + 256 + + + + + + Start + m_d.rec_cam(m_c)_to_person_registry.hpl + Y + Y + Y + + + m_d.rec_cam(m_c)_to_person_registry.hpl + m_d.rec_cam(m_c)_to_subpoena_registry.hpl + Y + Y + N + + + m_d.rec_cam(m_c)_to_subpoena_registry.hpl + m_d.rec_cam(m_c)_to_decision_service.hpl + Y + Y + N + + + m_d.rec_cam(m_c)_to_decision_service.hpl + Success + Y + Y + N + + + + + + diff --git a/v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c)/m_d.rec_cam(m_c)_to_decision_service.hpl b/v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c)/m_d.rec_cam(m_c)_to_decision_service.hpl new file mode 100644 index 0000000..4d07f7d --- /dev/null +++ b/v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c)/m_d.rec_cam(m_c)_to_decision_service.hpl @@ -0,0 +1,246 @@ + + + + m_d.rec_cam(m_c)_to_decision_service + Y + + + + Normal + 0 + + + N + 1000 + 100 + - + 2024/08/02 11:56:22.507 + - + 2024/08/02 11:56:22.507 + + + + + + Table input отчрочки из decisions + Insert / update (main_dashboard.recruitment_campaign) + N + + + Table input отчрочки из decisions + Update + Y + + + + Insert / update (main_dashboard.recruitment_campaign) + InsertUpdate + + Y + + 1 + + none + + + 100 + ervu-dashboard + + + = + recruitment_id + recruitment_id + + + = + recording_date + recording_date + + + = + spring_autumn + spring_autumn + + main_dashboard + recruitment_campaign
+ + subpoenas_sent + count_subpoena + Y + + + appeared_on_subpoenas + count_appeared + Y + + + not_appeared_on_subpoenas + count_not_appeared + Y + + + new_recruits + new_recruits + Y + + + postponement_have_right + postponement_have_right + Y + + + postponement_granted + postponement_granted + Y + + + appeared_on_subpoenas_percent + appeared_on_subpoenas_percent + Y + + + not_appeared_on_subpoenas_percent + not_appeared_on_subpoenas_percent + Y + + + postponement_have_right_percent + postponement_have_right_percent + Y + + + postponement_granted_percent + postponement_granted_percent + Y + + + recruitment_id + recruitment_id + N + + + spring_autumn + spring_autumn + N + +
+ N + + + 992 + 608 + +
+ + Table input отчрочки из decisions + TableInput + + Y + + 1 + + none + + + postgres.decision-document-service + N + 0 + WITH +ids AS ( + SELECT unnest(string_to_array(trim(both '{}' from '${ARR_MC}'), ','))::uuid AS recruitment_id +), +vse AS( + SELECT + CASE + WHEN dd.hidden is true THEN 'true' + ELSE 'false' + END AS postponement, + COALESCE(dd.updated_at, dd.created_at) AS postponement_date, + dd.recruit_id, + COALESCE(r.current_recruitment, r.target_recruitment) AS recruitment_id, + ROW_NUMBER() OVER (PARTITION BY dd.recruit_id ORDER BY COALESCE(dd.updated_at, dd.created_at) DESC) AS rn + FROM recruit r + JOIN deferment_decision dd ON dd.recruit_id = r.id + JOIN deferment_decision_type ddt on ddt.id = dd.type_id AND ddt.code = '1' + WHERE COALESCE(r.current_recruitment, r.target_recruitment)::uuid IN (SELECT recruitment_id FROM ids) +), +last_status AS( + SELECT * + FROM vse + WHERE rn = 1 +) +SELECT + COUNT(ls.postponement) FILTER (WHERE ls.postponement = 'true') AS postponement_have_right, + COUNT(ls.postponement) FILTER (WHERE ls.postponement = 'false') AS postponement_granted, + --COALESCE((COUNT(ls.postponement) FILTER (WHERE ls.postponement = 'true') * 100 / NULLIF(COUNT(ls.postponement), 0)), 0) AS postponement_have_right_percent, + --COALESCE((COUNT(ls.postponement) FILTER (WHERE ls.postponement = 'false') * 100 / NULLIF(COUNT(ls.postponement), 0)), 0) AS postponement_granted_percent, + CASE + WHEN EXTRACT(MONTH FROM ls.postponement_date) BETWEEN 1 AND 6 THEN 'Весна' + WHEN EXTRACT(MONTH FROM ls.postponement_date) BETWEEN 7 AND 12 THEN 'Осень' + END AS spring_autumn, + ls.recruitment_id, + current_date AS recording_date +FROM last_status ls +WHERE ls.recruitment_id IS NOT NULL + AND ls.postponement_date >= DATE_TRUNC('year', CURRENT_DATE) +GROUP BY spring_autumn, ls.recruitment_id + Y + + + 400 + 320 + + + + Update + Update + + Y + + 1 + + none + + + 100 + ervu-dashboard + Y + + + = + recruitment_id + recruitment_id + + + = + spring_autumn + spring_autumn + + + = + recording_date + recording_date + + main_dashboard + recruitment_campaign
+ + postponement_have_right + postponement_have_right + + + postponement_granted + postponement_granted + +
+ N + Y + + + 1024 + 320 + +
+ + + +
diff --git a/v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c)/m_d.rec_cam(m_c)_to_person_registry.hpl b/v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c)/m_d.rec_cam(m_c)_to_person_registry.hpl new file mode 100644 index 0000000..9e81e5a --- /dev/null +++ b/v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c)/m_d.rec_cam(m_c)_to_person_registry.hpl @@ -0,0 +1,127 @@ + + + + m_d.rec_cam(m_c)_to_person_registry + Y + + + + Normal + 0 + + + N + 1000 + 100 + - + 2024/08/02 11:56:22.507 + - + 2024/08/02 11:56:22.507 + + + + + + Table input (person_registry) регион/осень + Insert / update (main_dashboard.recruitment_campaign) + Y + + + + Insert / update (main_dashboard.recruitment_campaign) + InsertUpdate + + Y + + 1 + + none + + + 100 + ervu-dashboard + + + = + recruitment_id + recruitment_id + + + + = + recording_date + recording_date + + + + = + spring_autumn + spring_autumn + + + main_dashboard + recruitment_campaign
+ + recruitment_id + recruitment_id + N + + + spring_autumn + spring_autumn + N + + + recording_date + recording_date + N + +
+ N + + + 1008 + 320 + +
+ + Table input (person_registry) регион/осень + TableInput + + Y + + 1 + + none + + + postgres.person_registry + N + 0 + WITH +ids AS ( + -- Преобразуем строковый массив в таблицу UUID + SELECT unnest(string_to_array(trim(both '{}' from '${ARR_MC}'), ','))::uuid AS recruitment_id +), +season_separations AS ( + SELECT 'Весна' AS spring_autumn + UNION ALL + SELECT 'Осень' AS spring_autumn +) +SELECT + current_date AS recording_date, + i.recruitment_id AS recruitment_id, + ss.spring_autumn +FROM ids i +CROSS JOIN season_separations ss + Y + + + 464 + 320 + + + + + +
diff --git a/v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c).hpl b/v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c)/m_d.rec_cam(m_c)_to_subpoena_registry.hpl similarity index 75% rename from v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c).hpl rename to v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c)/m_d.rec_cam(m_c)_to_subpoena_registry.hpl index 4ab1cb0..3f08e26 100644 --- a/v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c).hpl +++ b/v1_apache-hop dash mapping/mil_com/main_dashboard.recruitment_campaign(m_c)/m_d.rec_cam(m_c)_to_subpoena_registry.hpl @@ -1,7 +1,7 @@ - main_dashboard.recruitment_campaign(m_c) + m_d.rec_cam(m_c)_to_subpoena_registry Y @@ -23,22 +23,12 @@ Table input (subpoena) регион/осень - Merge join - N - - - Table input отчрочки из decisions - Merge join - N - - - Merge join Insert / update (main_dashboard.recruitment_campaign) N Table input (subpoena) регион/осень - Insert / update (main_dashboard.recruitment_campaign) + Update Y @@ -137,36 +127,8 @@ N - 1008 - 320 - - - - Merge join - MergeJoin - - Y - - 1 - - none - - - LEFT OUTER - - recruitment_id - spring_autumn - - - recruitment_id - spring_autumn - - Table input (subpoena) регион/осень - Table input отчрочки из decisions - - - 624 - 496 + 928 + 544 @@ -244,7 +206,7 @@ season_separations AS ( WHEN EXTRACT(MONTH FROM ls.create_date) BETWEEN 7 AND 12 THEN 'Осень' END AS spring_autumn FROM last_status ls - WHERE ls.create_date >= DATE_TRUNC('year', CURRENT_DATE) + --WHERE ls.create_date >= DATE_TRUNC('year', CURRENT_DATE) ), season_separations_clean AS ( SELECT DISTINCT recruitment_id, spring_autumn FROM season_separations @@ -302,8 +264,8 @@ LEFT JOIN t3 ON ss.recruitment_id = t3.recruitment_id AND ss.spring_autumn = t3. - Table input отчрочки из decisions - TableInput + Update + Update Y @@ -312,51 +274,54 @@ LEFT JOIN t3 ON ss.recruitment_id = t3.recruitment_id AND ss.spring_autumn = t3. none + 100 ervu-dashboard - N - 0 - WITH -ids AS ( - SELECT unnest(string_to_array(trim(both '{}' from '${ARR_MC}'), ','))::uuid AS recruitment_id -), -vse AS( - SELECT - CASE - WHEN dd.hidden is true THEN 'true' - ELSE 'false' - END AS postponement, - COALESCE(dd.updated_at, dd.created_at) AS postponement_date, - dd.recruit_id, - COALESCE(r.current_recruitment, r.target_recruitment) AS recruitment_id, - ROW_NUMBER() OVER (PARTITION BY dd.recruit_id ORDER BY COALESCE(dd.updated_at, dd.created_at) DESC) AS rn - FROM recruit r - JOIN deferment_decision dd ON dd.recruit_id = r.id - JOIN deferment_decision_type ddt on ddt.id = dd.type_id AND ddt.code = '1' - WHERE COALESCE(r.current_recruitment, r.target_recruitment)::uuid IN (SELECT recruitment_id FROM ids) -), -last_status AS( - SELECT * - FROM vse - WHERE rn = 1 -) -SELECT - COUNT(ls.postponement) FILTER (WHERE ls.postponement = 'true') AS postponement_have_right, - COUNT(ls.postponement) FILTER (WHERE ls.postponement = 'false') AS postponement_granted, - CASE - WHEN EXTRACT(MONTH FROM ls.postponement_date) BETWEEN 1 AND 6 THEN 'Весна' - WHEN EXTRACT(MONTH FROM ls.postponement_date) BETWEEN 7 AND 12 THEN 'Осень' - END AS spring_autumn, - ls.recruitment_id, - current_date AS recording_date -FROM last_status ls -WHERE ls.recruitment_id IS NOT NULL - AND ls.postponement_date >= DATE_TRUNC('year', CURRENT_DATE) -GROUP BY spring_autumn, ls.recruitment_id - Y + Y + + + = + recruitment_id + recruitment_id + + + = + spring_autumn + spring_autumn + + + = + recording_date + recording_date + + main_dashboard + recruitment_campaign
+ + subpoenas_sent + count_subpoena + + + appeared_on_subpoenas + count_appeared + + + not_appeared_on_subpoenas + count_not_appeared + + + appeared_on_subpoenas_percent + appeared_on_subpoenas_percent + + + not_appeared_on_subpoenas_percent + not_appeared_on_subpoenas_percent + +
+ N + Y - 288 - 416 + 928 + 320