Remove table duplication for agent status reporting
This commit is contained in:
parent
b795ed49fb
commit
0c10d61456
@ -1,9 +1,85 @@
|
|||||||
config {
|
config {
|
||||||
type: "table",
|
type: "table",
|
||||||
schema: "pphe_five9_gold",
|
schema: "pphe_five9_gold",
|
||||||
tags: ["daily"],
|
uniqueKey: ["AGENT_ID", "TIMESTAMP", "STATE"],
|
||||||
|
assertions: {
|
||||||
|
uniqueKey: ["AGENT_ID", "TIMESTAMP", "STATE"],
|
||||||
|
nonNull: ["AGENT_ID", "TIMESTAMP", "STATE"],
|
||||||
|
rowConditions: [
|
||||||
|
'STATE_GROUP <> "NOT_MAPPED"',
|
||||||
|
'PRODUCTIVE <> "NOT_MAPPED"',
|
||||||
|
'REVENUE <> "NOT_MAPPED"',
|
||||||
|
'AGENT_ID = "0" or (AGENT_ID <> "0" AND AGENT_NAME <> "NOT_MAPPED")',
|
||||||
|
'STATE_ID <> 0',
|
||||||
|
'REASON_CODE is null or (REASON_CODE is not null and REASON_CODE_ID <> 0)'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
tags: ["agent_status_report"],
|
||||||
description: "Exporting last 7 days of AGENT_STATUS table."
|
description: "Exporting last 7 days of AGENT_STATUS table."
|
||||||
}
|
}
|
||||||
|
|
||||||
select *
|
--Extraction and transformation of fields that are used in Board load further. Contains last 7 days
|
||||||
from ${ref("stg_agent_status_report")}
|
select ags.AGENT_ID,
|
||||||
|
COALESCE(a.AGENT_NAME, 'NOT_MAPPED') AGENT_NAME,
|
||||||
|
COALESCE(a.AGENT_GROUP, 'NOT_MAPPED') as AGENT_GROUP,
|
||||||
|
COALESCE(a.AGENT_GROUP_ID, 0) as AGENT_GROUP_ID,
|
||||||
|
COALESCE(a.LANGUAGES, 'NOT_MAPPED') as LANGUAGES,
|
||||||
|
COALESCE(a.CODE, 'NOT_MAPPED') as LANG_CODE,
|
||||||
|
ags.AGENT_STATE_TIME,
|
||||||
|
regexp_replace(
|
||||||
|
cast(time(timestamp_seconds(cast(ags.AGENT_STATE_TIME as int))) as string),
|
||||||
|
r'^\d\d',
|
||||||
|
cast(extract(hour from time(timestamp_seconds(cast(ags.AGENT_STATE_TIME as int)))) + 24 * unix_date(date(timestamp_seconds(cast(ags.AGENT_STATE_TIME as int)))) as string)
|
||||||
|
) as AGENT_STATE_TIME_FORMATTED,
|
||||||
|
ags.AGENT_START_DATE,
|
||||||
|
ags.REASON_CODE,
|
||||||
|
COALESCE(mrc.REASON_CODE_ID, 0) as REASON_CODE_ID,
|
||||||
|
ags.TIMESTAMP,
|
||||||
|
date(ags.TIMESTAMP) DATE,
|
||||||
|
EXTRACT(HOUR FROM ags.TIMESTAMP) HOUR,
|
||||||
|
EXTRACT(MONTH FROM ags.TIMESTAMP) MONTH,
|
||||||
|
EXTRACT(YEAR FROM ags.TIMESTAMP) YEAR,
|
||||||
|
ags.AGENT_STATES,
|
||||||
|
ags.MEDIA_AVAILABILITY,
|
||||||
|
ags.UNAVAILABLE_FOR_CALLS,
|
||||||
|
ags.AVAILABLE_FOR_ALL,
|
||||||
|
ags.UNAVAILABLE_FOR_VM,
|
||||||
|
ags.AVAILABLE_FOR_CALLS,
|
||||||
|
ags.SKILL_AVAILABILITY,
|
||||||
|
ags.AVAILABLE_FOR_VM,
|
||||||
|
ags.STATE,
|
||||||
|
COALESCE(mas.STATE_ID, 0) as STATE_ID,
|
||||||
|
COALESCE(masg.STATE_GROUP_ID, 0) as STATE_GROUP_ID,
|
||||||
|
COALESCE(masg.STATE_GROUP, 'NOT_MAPPED') as STATE_GROUP,
|
||||||
|
ags.UNPAID_TIME,
|
||||||
|
regexp_replace(
|
||||||
|
cast(time(timestamp_seconds(cast(ags.UNPAID_TIME as int))) as string),
|
||||||
|
r'^\d\d',
|
||||||
|
cast(extract(hour from time(timestamp_seconds(cast(ags.UNPAID_TIME as int)))) + 24 * unix_date(date(timestamp_seconds(cast(ags.UNPAID_TIME as int)))) as string)
|
||||||
|
) as UNPAID_TIME_FORMATTED,
|
||||||
|
ags.PAID_TIME,
|
||||||
|
regexp_replace(
|
||||||
|
cast(time(timestamp_seconds(cast(ags.PAID_TIME as int))) as string),
|
||||||
|
r'^\d\d',
|
||||||
|
cast(extract(hour from time(timestamp_seconds(cast(ags.PAID_TIME as int)))) + 24 * unix_date(date(timestamp_seconds(cast(ags.PAID_TIME as int)))) as string)
|
||||||
|
) as PAID_TIME_FORMATTED,
|
||||||
|
COALESCE(mpr.PRODUCTIVE, 'NOT_MAPPED') as PRODUCTIVE,
|
||||||
|
COALESCE(mpr.REVENUE, 'NOT_MAPPED') as REVENUE,
|
||||||
|
from ${ref("stg_agent_status")} ags
|
||||||
|
left join ${ref("stg_AGENT")} a
|
||||||
|
on ags.AGENT_ID = a.AGENT_ID
|
||||||
|
left join ${ref("MAPPING_AGENT_STATE_ID")} mas
|
||||||
|
on ags.STATE = mas.STATE
|
||||||
|
left join ${ref("MAPPING_AGENT_STATE_GROUP")} masgi
|
||||||
|
on mas.STATE_ID = masgi.STATE_ID
|
||||||
|
left join ${ref("MAPPING_AGENT_STATE_GROUP_ID")} masg
|
||||||
|
on masgi.STATE_GROUP_ID = masg.STATE_GROUP_ID
|
||||||
|
left join ${ref("MAPPING_AGENT_REASON_CODE_ID")} mrc
|
||||||
|
on ags.REASON_CODE = mrc.REASON_CODE
|
||||||
|
left join ${ref("MAPPING_PRODUCTIVE_REVENUE")} mpr
|
||||||
|
on COALESCE(mas.STATE_ID, 0) = COALESCE(mpr.STATE_ID, 0)
|
||||||
|
and COALESCE(mrc.REASON_CODE_ID, 0) = COALESCE(mpr.REASON_CODE_ID, 0)
|
||||||
|
where date(ags.TIMESTAMP) >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
|
||||||
|
and ags.STATE not in ('Login', 'Logout', 'On Park', 'On Preview', 'On Video', 'On Voicemail')
|
||||||
|
and ags.AGENT_ID <> '400000000081027'
|
||||||
|
and date(ags.TIMESTAMP) < CURRENT_DATE()
|
||||||
@ -1,85 +0,0 @@
|
|||||||
config {
|
|
||||||
type: "table",
|
|
||||||
uniqueKey: ["AGENT_ID", "TIMESTAMP", "STATE"],
|
|
||||||
schema: "pphe_five9_stg",
|
|
||||||
assertions: {
|
|
||||||
uniqueKey: ["AGENT_ID", "TIMESTAMP", "STATE"],
|
|
||||||
nonNull: ["AGENT_ID", "TIMESTAMP", "STATE"],
|
|
||||||
rowConditions: [
|
|
||||||
'STATE_GROUP <> "NOT_MAPPED"',
|
|
||||||
'PRODUCTIVE <> "NOT_MAPPED"',
|
|
||||||
'REVENUE <> "NOT_MAPPED"',
|
|
||||||
'AGENT_ID = "0" or (AGENT_ID <> "0" AND AGENT_NAME <> "NOT_MAPPED")',
|
|
||||||
'STATE_ID <> 0',
|
|
||||||
'REASON_CODE is null or (REASON_CODE is not null and REASON_CODE_ID <> 0)'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
tags: ["agent_status_report"],
|
|
||||||
description: "Main agent status data for report"
|
|
||||||
}
|
|
||||||
|
|
||||||
--Extraction and transformation of fields that are used in Board load further. Contains last 7 days
|
|
||||||
select ags.AGENT_ID,
|
|
||||||
COALESCE(a.AGENT_NAME, 'NOT_MAPPED') AGENT_NAME,
|
|
||||||
COALESCE(a.AGENT_GROUP, 'NOT_MAPPED') as AGENT_GROUP,
|
|
||||||
COALESCE(a.AGENT_GROUP_ID, 0) as AGENT_GROUP_ID,
|
|
||||||
COALESCE(a.LANGUAGES, 'NOT_MAPPED') as LANGUAGES,
|
|
||||||
COALESCE(a.CODE, 'NOT_MAPPED') as LANG_CODE,
|
|
||||||
ags.AGENT_STATE_TIME,
|
|
||||||
regexp_replace(
|
|
||||||
cast(time(timestamp_seconds(cast(ags.AGENT_STATE_TIME as int))) as string),
|
|
||||||
r'^\d\d',
|
|
||||||
cast(extract(hour from time(timestamp_seconds(cast(ags.AGENT_STATE_TIME as int)))) + 24 * unix_date(date(timestamp_seconds(cast(ags.AGENT_STATE_TIME as int)))) as string)
|
|
||||||
) as AGENT_STATE_TIME_FORMATTED,
|
|
||||||
ags.AGENT_START_DATE,
|
|
||||||
ags.REASON_CODE,
|
|
||||||
COALESCE(mrc.REASON_CODE_ID, 0) as REASON_CODE_ID,
|
|
||||||
ags.TIMESTAMP,
|
|
||||||
date(ags.TIMESTAMP) DATE,
|
|
||||||
EXTRACT(HOUR FROM ags.TIMESTAMP) HOUR,
|
|
||||||
EXTRACT(MONTH FROM ags.TIMESTAMP) MONTH,
|
|
||||||
EXTRACT(YEAR FROM ags.TIMESTAMP) YEAR,
|
|
||||||
ags.AGENT_STATES,
|
|
||||||
ags.MEDIA_AVAILABILITY,
|
|
||||||
ags.UNAVAILABLE_FOR_CALLS,
|
|
||||||
ags.AVAILABLE_FOR_ALL,
|
|
||||||
ags.UNAVAILABLE_FOR_VM,
|
|
||||||
ags.AVAILABLE_FOR_CALLS,
|
|
||||||
ags.SKILL_AVAILABILITY,
|
|
||||||
ags.AVAILABLE_FOR_VM,
|
|
||||||
ags.STATE,
|
|
||||||
COALESCE(mas.STATE_ID, 0) as STATE_ID,
|
|
||||||
COALESCE(masg.STATE_GROUP_ID, 0) as STATE_GROUP_ID,
|
|
||||||
COALESCE(masg.STATE_GROUP, 'NOT_MAPPED') as STATE_GROUP,
|
|
||||||
ags.UNPAID_TIME,
|
|
||||||
regexp_replace(
|
|
||||||
cast(time(timestamp_seconds(cast(ags.UNPAID_TIME as int))) as string),
|
|
||||||
r'^\d\d',
|
|
||||||
cast(extract(hour from time(timestamp_seconds(cast(ags.UNPAID_TIME as int)))) + 24 * unix_date(date(timestamp_seconds(cast(ags.UNPAID_TIME as int)))) as string)
|
|
||||||
) as UNPAID_TIME_FORMATTED,
|
|
||||||
ags.PAID_TIME,
|
|
||||||
regexp_replace(
|
|
||||||
cast(time(timestamp_seconds(cast(ags.PAID_TIME as int))) as string),
|
|
||||||
r'^\d\d',
|
|
||||||
cast(extract(hour from time(timestamp_seconds(cast(ags.PAID_TIME as int)))) + 24 * unix_date(date(timestamp_seconds(cast(ags.PAID_TIME as int)))) as string)
|
|
||||||
) as PAID_TIME_FORMATTED,
|
|
||||||
COALESCE(mpr.PRODUCTIVE, 'NOT_MAPPED') as PRODUCTIVE,
|
|
||||||
COALESCE(mpr.REVENUE, 'NOT_MAPPED') as REVENUE,
|
|
||||||
from ${ref("stg_agent_status")} ags
|
|
||||||
left join ${ref("stg_AGENT")} a
|
|
||||||
on ags.AGENT_ID = a.AGENT_ID
|
|
||||||
left join ${ref("MAPPING_AGENT_STATE_ID")} mas
|
|
||||||
on ags.STATE = mas.STATE
|
|
||||||
left join ${ref("MAPPING_AGENT_STATE_GROUP")} masgi
|
|
||||||
on mas.STATE_ID = masgi.STATE_ID
|
|
||||||
left join ${ref("MAPPING_AGENT_STATE_GROUP_ID")} masg
|
|
||||||
on masgi.STATE_GROUP_ID = masg.STATE_GROUP_ID
|
|
||||||
left join ${ref("MAPPING_AGENT_REASON_CODE_ID")} mrc
|
|
||||||
on ags.REASON_CODE = mrc.REASON_CODE
|
|
||||||
left join ${ref("MAPPING_PRODUCTIVE_REVENUE")} mpr
|
|
||||||
on COALESCE(mas.STATE_ID, 0) = COALESCE(mpr.STATE_ID, 0)
|
|
||||||
and COALESCE(mrc.REASON_CODE_ID, 0) = COALESCE(mpr.REASON_CODE_ID, 0)
|
|
||||||
where date(ags.TIMESTAMP) >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
|
|
||||||
and ags.STATE not in ('Login', 'Logout', 'On Park', 'On Preview', 'On Video', 'On Voicemail')
|
|
||||||
and ags.AGENT_ID <> '400000000081027'
|
|
||||||
and date(ags.TIMESTAMP) < CURRENT_DATE()
|
|
||||||
Loading…
Reference in New Issue
Block a user