Merged PR 4515: resolutions incidents to reporting
# Description Resolutions incidents model to reporting # Checklist - [x] The edited models and dependants run properly with production data. - [x] The edited models are sufficiently documented. - [x] The edited models contain PK tests, and I've ran and passed them. - [x] I have checked for DRY opportunities with other models and docs. - [x] I've picked the right materialization for the affected models. # Other - [ ] Check if a full-refresh is required after this PR is merged. resolutions incidents to reporting Related work items: #27811
This commit is contained in:
parent
00d3922104
commit
ed707849e7
2 changed files with 503 additions and 0 deletions
81
models/reporting/resolutions/resolutions__incidents.sql
Normal file
81
models/reporting/resolutions/resolutions__incidents.sql
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
with
|
||||
int_resolutions__incidents as (
|
||||
select * from {{ ref("int_resolutions__incidents") }}
|
||||
)
|
||||
|
||||
select
|
||||
id_incident as id_incident,
|
||||
id_verification as id_verification,
|
||||
current_status_name as current_status_name,
|
||||
is_submission_complete as is_submission_complete,
|
||||
current_agent_name as current_agent_name,
|
||||
document_version as document_version,
|
||||
created_at_utc as created_at_utc,
|
||||
created_date_utc as created_date_utc,
|
||||
updated_at_utc as updated_at_utc,
|
||||
updated_date_utc as updated_date_utc,
|
||||
first_comment_at_utc as first_comment_at_utc,
|
||||
last_comment_at_utc as last_comment_at_utc,
|
||||
comment_count as comment_count,
|
||||
first_status_at_utc as first_status_at_utc,
|
||||
last_status_at_utc as last_status_at_utc,
|
||||
resolution_time_in_hours as resolution_time_in_hours,
|
||||
number_damaged_items as number_damaged_items,
|
||||
original_value_amount_in_host_currency as original_value_amount_in_host_currency,
|
||||
original_value_amount_in_gbp as original_value_amount_in_gbp,
|
||||
asked_repair_amount_in_host_currency as asked_repair_amount_in_host_currency,
|
||||
asked_repair_amount_in_gbp as asked_repair_amount_in_gbp,
|
||||
accepted_amount_in_host_currency as accepted_amount_in_host_currency,
|
||||
accepted_amount_in_gbp as accepted_amount_in_gbp,
|
||||
host_currency as host_currency,
|
||||
protection_name as protection_name,
|
||||
was_overriden as was_overriden,
|
||||
waiver_or_deposit_name as waiver_or_deposit_name,
|
||||
guest_verification_status as guest_verification_status,
|
||||
lower_protection_limit_usd as lower_protection_limit_usd,
|
||||
upper_protection_limit_usd as upper_protection_limit_usd,
|
||||
calculated_payout_amount_in_txn_currency
|
||||
as calculated_payout_amount_in_txn_currency,
|
||||
calculated_payout_currency as calculated_payout_currency,
|
||||
calculated_payout_amount_in_usd as calculated_payout_amount_in_usd,
|
||||
calculated_payout_amount_in_gbp as calculated_payout_amount_in_gbp,
|
||||
calculated_guest_charge_amount_in_txn_currency
|
||||
as calculated_guest_charge_amount_in_txn_currency,
|
||||
calculated_guest_charge_currency as calculated_guest_charge_currency,
|
||||
calculated_guest_charge_amount_in_usd as calculated_guest_charge_amount_in_usd,
|
||||
calculated_guest_charge_amount_in_gbp as calculated_guest_charge_amount_in_gbp,
|
||||
id_user_host as id_user_host,
|
||||
host_account_name as host_account_name,
|
||||
host_email as host_email,
|
||||
host_last_name as host_last_name,
|
||||
host_first_name as host_first_name,
|
||||
host_phone_code as host_phone_code,
|
||||
host_phone_number as host_phone_number,
|
||||
id_user_guest as id_user_guest,
|
||||
guest_email as guest_email,
|
||||
guest_last_name as guest_last_name,
|
||||
guest_first_name as guest_first_name,
|
||||
guest_phone_code as guest_phone_code,
|
||||
guest_phone_number as guest_phone_number,
|
||||
is_guest_deposit_retained as is_guest_deposit_retained,
|
||||
is_guest_deposit_collected as is_guest_deposit_collected,
|
||||
deposit_retained_amount_in_txn_currency as deposit_retained_amount_in_txn_currency,
|
||||
deposit_retained_currency as deposit_retained_currency,
|
||||
has_guest_contributed_to_cost as has_guest_contributed_to_cost,
|
||||
has_host_taken_preventative_steps as has_host_taken_preventative_steps,
|
||||
guest_contribution_amount_in_txn_currency
|
||||
as guest_contribution_amount_in_txn_currency,
|
||||
guest_contribution_currency as guest_contribution_currency,
|
||||
guest_contribution_amount_in_gbp as guest_contribution_amount_in_gbp,
|
||||
is_guest_contacted_about_damage as is_guest_contacted_about_damage,
|
||||
id_accommodation as id_accommodation,
|
||||
accommodation_name as accommodation_name,
|
||||
check_in_at_utc as check_in_at_utc,
|
||||
check_in_date_utc as check_in_date_utc,
|
||||
check_out_at_utc as check_out_at_utc,
|
||||
check_out_date_utc as check_out_date_utc,
|
||||
id_booking as id_booking,
|
||||
booking_status as booking_status,
|
||||
id_reservation as id_reservation
|
||||
|
||||
from int_resolutions__incidents i
|
||||
422
models/reporting/resolutions/schema.yml
Normal file
422
models/reporting/resolutions/schema.yml
Normal file
|
|
@ -0,0 +1,422 @@
|
|||
version: 2
|
||||
|
||||
models:
|
||||
- name: resolutions__incidents
|
||||
description: |
|
||||
"This table contains all incidents recorded by the resolutions team in Cosmos DB.
|
||||
It includes details about the incident, the user who reported it, the associated booking,
|
||||
the accommodation, the host, and the guest. Additionally, it tracks the resolution process,
|
||||
including the compensation amount requested by the host, the proposed settlement calculated
|
||||
by the system, and the final agreed-upon settlement amount."
|
||||
columns:
|
||||
- name: id_incident
|
||||
data_type: text
|
||||
description: "Unique identifier for the incident."
|
||||
data_tests:
|
||||
- not_null
|
||||
- unique
|
||||
|
||||
- name: id_verification
|
||||
data_type: text
|
||||
description: "Superhog unique validation ID, coming from other APIs."
|
||||
|
||||
- name: current_status_name
|
||||
data_type: text
|
||||
description: "Current status of the incident."
|
||||
data_tests:
|
||||
- not_null
|
||||
|
||||
- name: is_submission_complete
|
||||
data_type: boolean
|
||||
description: "Flag to indicate if the submission is complete."
|
||||
|
||||
- name: current_agent_name
|
||||
data_type: text
|
||||
description: "Name of the agent who is currently handling the incident."
|
||||
|
||||
- name: document_version
|
||||
data_type: text
|
||||
description: |
|
||||
"Reported document source, such as ResCentre, API, or manual form."
|
||||
|
||||
- name: created_at_utc
|
||||
data_type: timestamp
|
||||
description: "Timestamp when the incident was created."
|
||||
data_tests:
|
||||
- not_null
|
||||
|
||||
- name: created_date_utc
|
||||
data_type: date
|
||||
description: "Date when the incident was created."
|
||||
data_tests:
|
||||
- not_null
|
||||
|
||||
- name: updated_at_utc
|
||||
data_type: timestamp
|
||||
description: "Timestamp when the incident was last updated."
|
||||
|
||||
- name: updated_date_utc
|
||||
data_type: date
|
||||
description: "Date when the incident was last updated."
|
||||
|
||||
- name: first_comment_at_utc
|
||||
data_type: timestamp
|
||||
description: "Timestamp of the first comment on the incident."
|
||||
|
||||
- name: last_comment_at_utc
|
||||
data_type: timestamp
|
||||
description: "Timestamp of the last comment on the incident."
|
||||
|
||||
- name: comment_count
|
||||
data_type: bigint
|
||||
description: "Number of comments submitted on the incident."
|
||||
|
||||
- name: first_status_at_utc
|
||||
data_type: timestamp
|
||||
description: "Timestamp of the first status change on the incident."
|
||||
|
||||
- name: last_status_at_utc
|
||||
data_type: timestamp
|
||||
description: "Timestamp of the last status change on the incident."
|
||||
|
||||
- name: resolution_time_in_hours
|
||||
data_type: numeric
|
||||
description: "Time taken to resolve the incident, in hours, if completed."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: true
|
||||
|
||||
- name: number_damaged_items
|
||||
data_type: bigint
|
||||
description: "Number of items reported as damaged in the incident."
|
||||
|
||||
- name: original_value_amount_in_host_currency
|
||||
data_type: numeric
|
||||
description: |
|
||||
"Original value of the damaged items in the host currency."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: original_value_amount_in_gbp
|
||||
data_type: numeric
|
||||
description: |
|
||||
"Original value of the damaged items in GBP."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: asked_repair_amount_in_host_currency
|
||||
data_type: numeric
|
||||
description: |
|
||||
"Amount requested by the host for repair in the host currency."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: asked_repair_amount_in_gbp
|
||||
data_type: numeric
|
||||
description: |
|
||||
"Amount requested by the host for repair in GBP."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: accepted_amount_in_host_currency
|
||||
data_type: numeric
|
||||
description: |
|
||||
"Final accepted settlement amount in the host currency."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: accepted_amount_in_gbp
|
||||
data_type: numeric
|
||||
description: |
|
||||
"Final accepted settlement amount in GBP."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: host_currency
|
||||
data_type: text
|
||||
description: "Host or local currency"
|
||||
data_tests:
|
||||
- not_null:
|
||||
where: "original_value_amount_in_host_currency > 0
|
||||
or asked_repair_amount_in_host_currency > 0
|
||||
or accepted_amount_in_host_currency > 0"
|
||||
|
||||
- name: was_overriden
|
||||
data_type: boolean
|
||||
description: |
|
||||
"Flag to indicate if the proposed settlement value from the
|
||||
calculator was overridden."
|
||||
|
||||
- name: guest_verification_status
|
||||
data_type: text
|
||||
description: "Guest verification status for this booking."
|
||||
|
||||
- name: lower_protection_limit_usd
|
||||
data_type: numeric
|
||||
description: "Lower protection limit in USD."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: upper_protection_limit_usd
|
||||
data_type: numeric
|
||||
description: "Upper protection limit in USD."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: calculated_payout_amount_in_txn_currency
|
||||
data_type: text
|
||||
description: "Calculated payout amount in local currency."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: calculated_payout_currency
|
||||
data_type: text
|
||||
description: "Currency of the calculated payout amount."
|
||||
data_tests:
|
||||
- not_null:
|
||||
where: "calculated_payout_amount_in_txn_currency > 0"
|
||||
|
||||
- name: calculated_payout_amount_in_usd
|
||||
data_type: text
|
||||
description: "Calculated payout amount in USD."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: calculated_payout_amount_in_gbp
|
||||
data_type: text
|
||||
description: "Calculated payout amount in GBP."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: calculated_guest_charge_amount_in_txn_currency
|
||||
data_type: text
|
||||
description: "Calculated guest charge amount in local currency."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: calculated_guest_charge_currency
|
||||
data_type: text
|
||||
description: "Currency of the calculated guest charge amount."
|
||||
data_tests:
|
||||
- not_null:
|
||||
where: "calculated_guest_charge_amount_in_txn_currency > 0"
|
||||
|
||||
- name: calculated_guest_charge_amount_in_usd
|
||||
data_type: text
|
||||
description: "Calculated guest charge amount in USD."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: calculated_guest_charge_amount_in_gbp
|
||||
data_type: text
|
||||
description: "Calculated guest charge amount in GBP."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: id_user_host
|
||||
data_type: text
|
||||
description: |
|
||||
"Unique Id that identifies the host."
|
||||
data_tests:
|
||||
- not_null
|
||||
- relationships:
|
||||
to: ref('stg_core__user')
|
||||
field: id_user
|
||||
|
||||
- name: host_account_name
|
||||
data_type: text
|
||||
description: "Name of the host account."
|
||||
|
||||
- name: host_email
|
||||
data_type: text
|
||||
description: "Email of the host."
|
||||
|
||||
- name: host_last_name
|
||||
data_type: text
|
||||
description: "Last name of the host."
|
||||
|
||||
- name: host_first_name
|
||||
data_type: text
|
||||
description: "First name of the host."
|
||||
|
||||
- name: host_phone_code
|
||||
data_type: text
|
||||
description: "Phone code of the host."
|
||||
|
||||
- name: host_phone_number
|
||||
data_type: text
|
||||
description: "Phone number of the host."
|
||||
|
||||
- name: id_user_guest
|
||||
data_type: text
|
||||
description: "Superhog code that uniquely identifies a single guest."
|
||||
data_tests:
|
||||
- relationships:
|
||||
to: ref('stg_core__user')
|
||||
field: id_user
|
||||
|
||||
- name: guest_email
|
||||
data_type: text
|
||||
description: "Email of the guest."
|
||||
|
||||
- name: guest_last_name
|
||||
data_type: text
|
||||
description: "Last name of the guest."
|
||||
|
||||
- name: guest_first_name
|
||||
data_type: text
|
||||
description: "First name of the guest."
|
||||
|
||||
- name: guest_phone_code
|
||||
data_type: text
|
||||
description: "Phone code of the guest."
|
||||
|
||||
- name: guest_phone_number
|
||||
data_type: text
|
||||
description: "Phone number of the guest."
|
||||
|
||||
- name: is_guest_deposit_retained
|
||||
data_type: boolean
|
||||
description: "In case a deposit has been collected from the guest,
|
||||
whether it has been retained or not."
|
||||
|
||||
- name: is_guest_deposit_collected
|
||||
data_type: boolean
|
||||
description: "If the host has collected a deposit from the guest."
|
||||
|
||||
- name: deposit_retained_amount_in_txn_currency
|
||||
data_type: numeric
|
||||
description: "Amount of the deposit retained in local currency."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: deposit_retained_currency
|
||||
data_type: text
|
||||
description: "Currency of the deposit retained."
|
||||
data_tests:
|
||||
- not_null:
|
||||
where: "deposit_retained_amount_in_txn_currency > 0"
|
||||
|
||||
- name: has_guest_contributed_to_cost
|
||||
data_type: boolean
|
||||
description: "If the guest has agreed to contribute to the cost
|
||||
when talking to the host"
|
||||
|
||||
- name: has_host_taken_preventative_steps
|
||||
data_type: boolean
|
||||
description: "If the host has taken any action to prevent the damage
|
||||
or further damage once identified"
|
||||
|
||||
- name: guest_contribution_amount_in_txn_currency
|
||||
data_type: numeric
|
||||
description: "Amount of the guest contribution, in case they did,
|
||||
in local currency."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: guest_contribution_currency
|
||||
data_type: text
|
||||
description: "Currency of the guest contribution."
|
||||
data_tests:
|
||||
- not_null:
|
||||
where: "guest_contribution_amount_in_txn_currency > 0"
|
||||
|
||||
- name: guest_contribution_amount_in_gbp
|
||||
data_type: numeric
|
||||
description: "Amount of the guest contribution, in case they did,
|
||||
in GBP."
|
||||
data_tests:
|
||||
- dbt_expectations.expect_column_values_to_be_between:
|
||||
min_value: 0
|
||||
strictly: false
|
||||
|
||||
- name: is_guest_contacted_about_damage
|
||||
data_type: boolean
|
||||
description: "If the host has contacted the guest about the damage caused"
|
||||
|
||||
- name: id_accommodation
|
||||
data_type: numeric
|
||||
description: "Superhog code that uniquely identifies a single accommodation."
|
||||
data_tests:
|
||||
- not_null
|
||||
- relationships:
|
||||
to: ref('stg_core__accommodation')
|
||||
field: id_accommodation
|
||||
|
||||
- name: accommodation_name
|
||||
data_type: text
|
||||
description: "Accommodation name."
|
||||
|
||||
- name: check_in_at_utc
|
||||
data_type: timestamp without time zone
|
||||
description: "Timestamp of the check-in date in UTC of the booking."
|
||||
data_tests:
|
||||
- not_null
|
||||
|
||||
- name: check_in_date_utc
|
||||
data_type: date
|
||||
description: "Date of the check-in date in UTC of the booking."
|
||||
data_tests:
|
||||
- not_null
|
||||
|
||||
- name: check_out_at_utc
|
||||
data_type: timestamp without time zone
|
||||
description: "Timestamp of the check-out date in UTC of the booking."
|
||||
data_tests:
|
||||
- not_null
|
||||
|
||||
- name: check_out_date_utc
|
||||
data_type: date
|
||||
description: "Date of the check-out date in UTC of the booking."
|
||||
data_tests:
|
||||
- not_null
|
||||
|
||||
- name: id_booking
|
||||
data_type: numeric
|
||||
description: "Superhog unique booking ID"
|
||||
data_tests:
|
||||
- not_null
|
||||
- relationships:
|
||||
to: ref('stg_core__booking')
|
||||
field: id_booking
|
||||
|
||||
- name: booking_status
|
||||
data_type: text
|
||||
description: "Status of the booking."
|
||||
|
||||
- name: id_reservation
|
||||
data_type: text
|
||||
description: "External unique ID for the reservation."
|
||||
Loading…
Add table
Add a link
Reference in a new issue