From e42a555b8c6f353a345f2a13534ef3ec2306439e Mon Sep 17 00:00:00 2001 From: Anna Saiapina Date: Fri, 3 Oct 2025 13:44:19 +0000 Subject: [PATCH] Remove duplication for the calls report reporting --- definitions/gold/calls_export.sqlx | 90 +++++++++++++++++++++- definitions/staging/stg_calls_report.sqlx | 91 ----------------------- 2 files changed, 86 insertions(+), 95 deletions(-) delete mode 100644 definitions/staging/stg_calls_report.sqlx diff --git a/definitions/gold/calls_export.sqlx b/definitions/gold/calls_export.sqlx index 17c4a07..284ee12 100644 --- a/definitions/gold/calls_export.sqlx +++ b/definitions/gold/calls_export.sqlx @@ -1,9 +1,91 @@ config { type: "table", - schema: "pphe_five9_gold", - tags: ["daily"], + schema: "pphe_five9_gold", + uniqueKey: ["SESSION_ID", "TIMESTAMP", "DNIS"], + assertions: { + uniqueKey: ["SESSION_ID", "TIMESTAMP", "DNIS"], + nonNull: ["SESSION_ID", "TIMESTAMP", "DNIS", "AGENT_GROUP_ID", "SKILL_ID"], + rowConditions: [ + 'BOARD_PROPERTY_GROUP <> "ADD"', + 'DISPOSITION_GROUP <> "NOT_MAPPED"', + 'CAMPAIGN_GROUP <> "NOT_MAPPED"', + 'DISPOSITION_ID <> 0', + 'DISPOSITION_GROUP_ID <> 0', + 'CAMPAIGN_ID <> 0', + 'CAMPAIGN_GROUP_ID <> 0', + ] + }, + tags: ["calls_report"], description: "Exporting last 7 days of CALLS table" } -select * -from ${ref("stg_calls_report")} \ No newline at end of file +--Extraction and transformation of fields that are used in Board load further. Contains last 7 days +select sc.SESSION_ID, + sc.DNIS, + sc.TIMESTAMP, + date(sc.TIMESTAMP) DATE, + EXTRACT(HOUR FROM sc.TIMESTAMP) HOUR, + EXTRACT(MONTH FROM sc.TIMESTAMP) MONTH, + EXTRACT(YEAR FROM sc.TIMESTAMP) YEAR, + sc.DAY_OF_WEEK, + sc.CALL_ID, + sc.ROUTING_HOTEL_NAME, + case + when sc.ROUTING_HOTEL_NAME is null + then '_' + else ifnull(p.BOARD_PROPERTY_GROUP, 'ADD') --for check of the missed properties + end BOARD_PROPERTY_GROUP, + sc.AGENT_ID, + sc.AGENT_NAME, + a.LANGUAGES, + a.CODE LANGUAUGE_ID, + a.AGENT_GROUP_ID, + sc.AGENT_GROUP, + COALESCE(d.DISPOSITION_ID, 0) as DISPOSITION_ID, + sc.DISPOSITION, + COALESCE(d.DISPOSITION_GROUP_ID, 0) as DISPOSITION_GROUP_ID, + COALESCE(d.DISPOSITION_GROUP, 'NOT_MAPPED') as DISPOSITION_GROUP, + COALESCE(c.CAMPAIGN_ID, 0) as CAMPAIGN_ID, + sc.CAMPAIGN, + COALESCE(c.CAMPAIGN_GROUP_ID, 0) as CAMPAIGN_GROUP_ID, + COALESCE(c.CAMPAIGN_GROUP, 'NOT_MAPPED') as CAMPAIGN_GROUP, + sc.SKILL, + s.SKILL_ID, + sc.CALL_TIME, + sc.CALL_TIME_FORMATTED, + sc.RING_TIME, + sc.RING_TIME_FORMATTED, + sc.TALK_TIME, + sc.TALK_TIME_FORMATTED, + sc.SPEED_OF_ANSWER, + sc.SPEED_OF_ANSWER_FORMATTED, + sc.AFTER_CALL_WORK_TIME, + sc.AFTER_CALL_WORK_TIME_FORMATTED, + sc.HOLD_TIME, + sc.HOLD_TIME_FORMATTED, + sc.TALK_TIME_LESS_HOLD_AND_PARK, + sc.TALK_TIME_LESS_HOLD_AND_PARK_FORMATTED, + sc.TRANSFERS, + sc.ABANDONED, + sc.CALLS, + sc.ANI, + c.CAMPAIGN_TYPE_ID, + sc.CAMPAIGN_TYPE, + "PHONE" MEDIA_TYPE_ID, + sc.TOTAL_QUEUE_TIME, + sc.TOTAL_QUEUE_TIME_FORMATTED, + sc.HANDLE_TIME, + sc.HANDLE_TIME_FORMATTED, +from ${ref("stg_calls")} sc +left join ${ref("stg_AGENT")} a +on sc.AGENT_ID = a.AGENT_ID +left join ${ref("stg_DISPOSITION")} d +on sc.DISPOSITION = d.DISPOSITION +left join ${ref("stg_CAMPAIGN")} c +on sc.CAMPAIGN = c.CAMPAIGN +left join ${ref("MAPPING_PROPERTY_CALLS")} p +on sc.Routing_Hotel_Name = p.ROUTING_HOTEL_NAME +left join ${ref("MAPPING_SKILL")} s +on sc.SKILL = s.SKILL +where date(sc.TIMESTAMP) >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) +and date(sc.TIMESTAMP) < CURRENT_DATE() \ No newline at end of file diff --git a/definitions/staging/stg_calls_report.sqlx b/definitions/staging/stg_calls_report.sqlx deleted file mode 100644 index 005951a..0000000 --- a/definitions/staging/stg_calls_report.sqlx +++ /dev/null @@ -1,91 +0,0 @@ -config { - type: "table", - uniqueKey: ["SESSION_ID", "TIMESTAMP", "DNIS"], - schema: "pphe_five9_stg", - assertions: { - uniqueKey: ["SESSION_ID", "TIMESTAMP", "DNIS"], - nonNull: ["SESSION_ID", "TIMESTAMP", "DNIS", "AGENT_GROUP_ID", "SKILL_ID"], - rowConditions: [ - 'BOARD_PROPERTY_GROUP <> "ADD"', - 'DISPOSITION_GROUP <> "NOT_MAPPED"', - 'CAMPAIGN_GROUP <> "NOT_MAPPED"', - 'DISPOSITION_ID <> 0', - 'DISPOSITION_GROUP_ID <> 0', - 'CAMPAIGN_ID <> 0', - 'CAMPAIGN_GROUP_ID <> 0', - ] - }, - tags: ["calls_report"], - description: "Main calls data for report" -} - ---Extraction and transformation of fields that are used in Board load further. Contains last 7 days -select sc.SESSION_ID, - sc.DNIS, - sc.TIMESTAMP, - date(sc.TIMESTAMP) DATE, - EXTRACT(HOUR FROM sc.TIMESTAMP) HOUR, - EXTRACT(MONTH FROM sc.TIMESTAMP) MONTH, - EXTRACT(YEAR FROM sc.TIMESTAMP) YEAR, - sc.DAY_OF_WEEK, - sc.CALL_ID, - sc.ROUTING_HOTEL_NAME, - case - when sc.ROUTING_HOTEL_NAME is null - then '_' - else ifnull(p.BOARD_PROPERTY_GROUP, 'ADD') --for check of the missed properties - end BOARD_PROPERTY_GROUP, - sc.AGENT_ID, - sc.AGENT_NAME, - a.LANGUAGES, - a.CODE LANGUAUGE_ID, - a.AGENT_GROUP_ID, - sc.AGENT_GROUP, - COALESCE(d.DISPOSITION_ID, 0) as DISPOSITION_ID, - sc.DISPOSITION, - COALESCE(d.DISPOSITION_GROUP_ID, 0) as DISPOSITION_GROUP_ID, - COALESCE(d.DISPOSITION_GROUP, 'NOT_MAPPED') as DISPOSITION_GROUP, - COALESCE(c.CAMPAIGN_ID, 0) as CAMPAIGN_ID, - sc.CAMPAIGN, - COALESCE(c.CAMPAIGN_GROUP_ID, 0) as CAMPAIGN_GROUP_ID, - COALESCE(c.CAMPAIGN_GROUP, 'NOT_MAPPED') as CAMPAIGN_GROUP, - sc.SKILL, - s.SKILL_ID, - sc.CALL_TIME, - sc.CALL_TIME_FORMATTED, - sc.RING_TIME, - sc.RING_TIME_FORMATTED, - sc.TALK_TIME, - sc.TALK_TIME_FORMATTED, - sc.SPEED_OF_ANSWER, - sc.SPEED_OF_ANSWER_FORMATTED, - sc.AFTER_CALL_WORK_TIME, - sc.AFTER_CALL_WORK_TIME_FORMATTED, - sc.HOLD_TIME, - sc.HOLD_TIME_FORMATTED, - sc.TALK_TIME_LESS_HOLD_AND_PARK, - sc.TALK_TIME_LESS_HOLD_AND_PARK_FORMATTED, - sc.TRANSFERS, - sc.ABANDONED, - sc.CALLS, - sc.ANI, - c.CAMPAIGN_TYPE_ID, - sc.CAMPAIGN_TYPE, - "PHONE" MEDIA_TYPE_ID, - sc.TOTAL_QUEUE_TIME, - sc.TOTAL_QUEUE_TIME_FORMATTED, - sc.HANDLE_TIME, - sc.HANDLE_TIME_FORMATTED, -from ${ref("stg_calls")} sc -left join ${ref("stg_AGENT")} a -on sc.AGENT_ID = a.AGENT_ID -left join ${ref("stg_DISPOSITION")} d -on sc.DISPOSITION = d.DISPOSITION -left join ${ref("stg_CAMPAIGN")} c -on sc.CAMPAIGN = c.CAMPAIGN -left join ${ref("MAPPING_PROPERTY_CALLS")} p -on sc.Routing_Hotel_Name = p.ROUTING_HOTEL_NAME -left join ${ref("MAPPING_SKILL")} s -on sc.SKILL = s.SKILL -where date(sc.TIMESTAMP) >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) -and date(sc.TIMESTAMP) < CURRENT_DATE() \ No newline at end of file