models: - name: int_daily_currency_exchange_rates description: >- This model holds a lot of data on currency exchange rates. The time granularity is daily. Each record holds a currency pair for a specific day, source and version. Actual rates are sourced from xe.com data. The `guessed` and `forecast` versions are built by simply 'pushing' the first/last exchange rate on record. Basically, wherever we dont' have data for a date, we pick the closest actual data point that comes from xe.com. Bear in mind this means that `forecast` version records will change on a daily basis as actual data moves forwards, meaning you shouldn't assume your money amounts converted in the future should always stay put. Note that, given the dimensionality, getting a simple time series for a currency pair will require a bit of filtering. Reverse rates are explicit. This means that, for any given day and any given currency pair, you will find two records with opposite from/to positions. So, for 2024-01-01, you will find both a EUR->USD record and a USD->EUR record with the opposite rate (1/rate). columns: - name: id_exchange_rate data_type: text description: A unique ID for the record, derived from concatenating the currencies, date, source and version. Currency order is relevant (EURUSD != USDEUR). data_tests: - not_null - unique - name: from_currency data_type: character description: The source currency, represented as an ISO 4217 code. data_tests: - not_null - name: to_currency data_type: character description: The target currency, represented as an ISO 4217 code. data_tests: - not_null - name: rate data_type: numeric description: >- The exchange rate, represented as the units of the target currency that one unit of source currency gets you. So, from_currency=USD to to_currency=PLN with rate=4.2 should be read as '1 US Dollar buys me 4.2 Polish Zlotys'. For same currency pairs (EUR to EUR, USD to USD, etc). The rate will always be one. The rate can be smaller than one, but can't be negative. data_tests: - not_negative_or_zero - not_null - name: rate_date_utc data_type: date description: The date in which the rate record is relevant. data_tests: - not_null - name: source data_type: text description: Where is the data coming from. Records that are composed from making assumptions on real data will contain `_inferred`. - name: rate_version data_type: text description: The version of the rate. This can be one of `actual` (the rate is a reality fact), `forecast` (the rate sits in the future and is a guess in nature) or `guess` (the rate sits in the past and is a guess in nature). Note that one currency pair can have multiple rate versions on the same date. data_tests: - accepted_values: values: - guess - actual - forecast - not_null - name: updated_at_utc data_type: timestamp with time zone description: For external sources, this will be the point in time when the information was obtained from them. For stuff we make up here in the DWH, this will be the point in time when we made the assumption. data_tests: - not_null - name: int_simple_exchange_rates description: >- A simplified vision of exchange rates, derived from `int_daily_currency_exchange_rates`. Come here if you don't want to understand nuances and complexities and just want to convert rates. The time granularity is daily. Each record holds a currency pair for a specific day. You will only find one conversion rate per currency pair and date. data_tests: - dbt_utils.unique_combination_of_columns: combination_of_columns: - from_currency - to_currency - rate_date_utc columns: - name: from_currency data_type: character description: The source currency, represented as an ISO 4217 code. data_tests: - not_null - name: to_currency data_type: character description: The source currency, represented as an ISO 4217 code. data_tests: - not_null - name: rate data_type: numeric description: The target currency, represented as an ISO 4217 code. data_tests: - not_null - name: rate_date_utc data_type: date description: The date in which the rate record is relevant. data_tests: - not_null - name: updated_at_utc data_type: timestamp with time zone description: For external sources, this will be the point in time when the information was obtained from them. For stuff we make up here in the DWH, this will be the point in time when we made the assumption. data_tests: - not_null - name: int_mtd_vs_previous_year_metrics description: | This model is used for global KPIs. It aggregates all the mtd models with the different metrics per source and computes any necessary weighted metric across different sources. Each metric has a date, dimension and dimension value that defines the primary key of this model. Finally, it displays any metric on the current date, the previous year date and it computes the relative increment by using the macro: - calculate_safe_relative_increment data_tests: - dbt_utils.unique_combination_of_columns: combination_of_columns: - date - dimension - dimension_value - dbt_expectations.expect_column_pair_values_to_be_equal: column_A: revenue_retained_post_resolutions_in_gbp column_B: total_revenue_in_gbp + xero_waiver_paid_back_to_host_in_gbp + xero_host_resolution_amount_paid_in_gbp - dbt_expectations.expect_column_pair_values_to_be_equal: column_A: total_revenue_in_gbp column_B: total_guest_payments_in_gbp + xero_apis_net_fees_in_gbp + xero_operator_net_fees_in_gbp columns: - name: date data_type: date description: The date for the month-to-date metrics. data_tests: - not_null - name: dimension data_type: string description: The dimension or granularity of the metrics. data_tests: - accepted_values: values: - global - by_number_of_listings - by_billing_country - by_business_scope - by_deal - name: dimension_value data_type: string description: The value or segment available for the selected dimension. data_tests: - not_null - name: int_mtd_aggregated_metrics description: | The `int_mtd_aggregated_metrics` model aggregates multiple metrics on a year, month, and day basis. The primary source of data is the `int_mtd_vs_previous_year_metrics` model, which contain the combination of metrics data per source. This model just changes the display format to unpivot the information into a set of metric, value, previous_year_value and relative_increment at a given date. It uses Jinja code to avoid code replication. data_tests: - dbt_utils.unique_combination_of_columns: combination_of_columns: - date - metric - dimension - dimension_value columns: - name: year data_type: int description: year number of the given date. data_tests: - not_null - name: month data_type: int description: month number of the given date. data_tests: - not_null - name: day data_type: int description: day monthly number of the given date. data_tests: - not_null - name: is_end_of_month data_type: boolean description: True if it's end of month. data_tests: - not_null - name: is_end_of_month_or_yesterday data_type: boolean description: True if it's end of month or yesterday. data_tests: - not_null - name: is_current_month data_type: boolean description: | checks if the date is within the current executed month, 1 for yes, 0 for no. data_tests: - not_null - name: first_day_month data_type: date description: | first day of the month corresponding to the date field. data_tests: - not_null - name: date data_type: date description: | main date for the computation, that is used for filters. data_tests: - not_null - name: dimension data_type: string description: The dimension or granularity of the metrics. data_tests: - accepted_values: values: - global - by_number_of_listings - by_billing_country - by_business_scope - by_deal - name: dimension_value data_type: string description: The value or segment available for the selected dimension. data_tests: - not_null - name: previous_year_date data_type: date description: | corresponds to the date of the previous year, with respect to the field date. It's only displayed for information purposes, should not be needed for reporting. - name: metric data_type: text description: name of the business metric. data_tests: - not_null - name: order_by data_type: integer description: | order for displaying purposes. Null values are accepted, but keep in mind that then there's no default controlled display order. - name: include_in_account_reporting data_type: boolean description: | Category to indicate if the metric should be included in the account reporting (by deal). This will limit the display for reporting purposes. data_tests: - not_null - name: display_exclusion data_type: string description: | Category to indicate if the metric requires a certain exclusion due to relying on not timely information. This will limit the display for reporting purposes. data_tests: - not_null - accepted_values: values: - NONE - INVOICING - ONGOING_MONTH - name: number_format data_type: text description: allows for grouping and formatting for displaying purposes. data_tests: - accepted_values: values: [ "integer", "percentage", "currency_gbp", "converted_metric_currency_gbp", ] - name: value data_type: numeric description: | numeric value (integer or decimal) that corresponds to the MTD computation of the metric at a given date. - name: previous_year_value data_type: numeric description: | numeric value (integer or decimal) that corresponds to the MTD computation of the metric on the previous year at a given date. - name: relative_increment data_type: numeric description: | numeric value that corresponds to the relative increment between value and previous year value, following the computation: value / previous_year_value - 1. - name: relative_increment_with_sign_format data_type: numeric description: | relative_increment value multiplied by -1 in case this metric's growth doesn't have a positive impact for Superhog, otherwise is equal to relative_increment. This value is specially created for formatting in PBI - name: int_monthly_aggregated_metrics_history_by_deal description: | This model aggregates the monthly historic information regarding the different metrics computed at deal level. The primary sources of data are the `int_yyy__monthly_XXXXX_history_by_deal` models which contain the raw metrics data per source. Unlike the int_mtd_aggregated_metrics, this model does not abstract each metric, since no comparison versus last year is performed. In short, it just gathers the information stored in the abovementioned models. To keep in mind: aggregating the information of this model will not necessarily result into the int_mtd_aggregated metrics because 1) the mtd version contains more computing dates than the by deal version, the latest being a subset of the first, and 2) the deal based model enforces that a booking/guest journey/listing/etc has a host with a deal assigned, which is not necessarily the case. data_tests: - dbt_utils.unique_combination_of_columns: combination_of_columns: - date - id_deal columns: - name: date data_type: date description: The last day of the month or yesterday for historic metrics. data_tests: - not_null - name: id_deal data_type: character varying description: Id of the deal associated to the host. data_tests: - not_null - name: client_type data_type: string description: | Type of client. It can be either PLATFORM or API. data_tests: - not_null - accepted_values: values: - PLATFORM - API - name: business_scope data_type: string description: | Business scope identifying the metric source. data_tests: - not_null - accepted_values: values: - "Old Dash" - "New Dash" - "API" - "UNSET" - name: main_deal_name data_type: string description: | Main name for this ID deal. data_tests: - not_null - name: has_active_pms data_type: boolean description: | Does the deal have an active associated PMS. data_tests: - not_null - name: active_pms_list data_type: string description: | Name of the active PMS associated with the deal. It can have more than one PMS associated with it. It can be null if it doesn't have any PMS associated. - name: active_accommodations_per_deal_segmentation data_type: string description: | Segment value based on the number of listings booked in 12 months for a given deal and date. data_tests: - not_null - accepted_values: values: - "0" - "01-05" - "06-20" - "21-60" - "61+" - "UNSET" - name: main_billing_country_iso_3_per_deal data_type: string description: | ISO 3166-1 alpha-3 main country code in which the Deal is billed. In some cases it's null. - name: int_monthly_growth_score_by_deal description: | The main goal of this model is to provide a growth score by deal and month. The idea behind it is that each deal will have some business performance associated to it over the months, and that comparing how it is currently performing vs. historical data we can determine whether the tendency is to grow or to decay. This is specially useful for AMs to focus their effort towards the clients that have a negative tendency. The computation of the growth score is based on 3 main indicators: - Created bookings - Listings booked in month - Total revenue (in gbp) The main idea is, for each deal, to compare each of these metrics by checking the latest monthly value vs. 1) the monthly value of the equivalent month on the previous year and 2) the monthly value of the previous month - in other words, a year-on-year (YoY) and month-on-month (MoM) comparison. We do this comparison by doing a relative incremental. The growth score is computed then by averaging the outcome of the 6 scores. Lastly, in order to provide a prioritisation sense, we have a weighted growth score that results from the multiplication of the growth score per the revenue weight a specific deal has provided in the previous 12 months. However, this is not strictly true for Revenue because 1) we have an invoicing delay and 2) in some cases, monthly revenue per deal can be negative. In this specific cases, the YoY comparison is shifted by one month, and an effective revenue value for the revenue share is computed, that cannot be lower than 0. In order to keep both a properly set up score and revenue consistency, both a real revenue value and effective revenue value are present in this model, while no MoM or YoY value is computed if negative revenue is found. Lastly, this model provides informative date fields, deal attributes, absolute metric values and MoM & YoY relative incrementals to enrich reporting. data_tests: - dbt_utils.unique_combination_of_columns: combination_of_columns: - date - id_deal columns: - name: date data_type: date description: | Date corresponding to the last day of the month. Given month metrics are inclusive to this date. Together with id_deal, it acts as the primary key of this model. data_tests: - not_null - name: id_deal data_type: string description: | Unique identifier of a Deal. Together with date, it acts as the primary key of this model. data_tests: - not_null - name: client_type data_type: string description: | Type of client. It can be either PLATFORM or API. data_tests: - not_null - accepted_values: values: - PLATFORM - API - name: main_deal_name data_type: string description: | Main name for a Deal, representing the client. data_tests: - not_null - name: has_active_pms data_type: boolean description: | Does the deal have an active associated PMS. data_tests: - not_null - name: active_pms_list data_type: string description: | Name of the active PMS associated with the deal. It can have more than one PMS associated with it. It can be null if it doesn't have any PMS associated. - name: main_billing_country_iso_3_per_deal data_type: string description: | Main billing country for this client. In some cases it can be null. - name: deal_lifecycle_state data_type: string description: | Identifier of the lifecycle state of a given deal in a given month. - name: deal_hubspot_stage data_type: string description: | Current hubspot stage for a given deal. - name: account_manager data_type: string description: | Current Account Manager in charge of a given deal, according to Hubspot. - name: live_date_utc data_type: date description: | Date in which the account has gone live, according to Hubspot. - name: cancellation_date_utc data_type: date description: | Date in which the account has been offboarded, according to Hubspot. - name: given_month_first_day_month data_type: date description: | Informative field. It indicates the first day of the month corresponding to date. If date = 2024-09-30, this field will be 2024-09-01. data_tests: - not_null - name: previous_1_month_first_day_month data_type: date description: | Informative field. It indicates the first day of the previous month with respect to date. If date = 2024-09-30, this field will be 2024-08-01. It can be null if no previous history for that deal is found. - name: previous_2_month_first_day_month data_type: date description: | Informative field. It indicates the first day of the month 2 months before with respect to date. If date = 2024-09-30, this field will be 2024-07-01. It can be null if no previous history for that deal is found. - name: previous_12_month_first_day_month data_type: date description: | Informative field. It indicates the first day of the month with respect to date, but on the previous year. If date = 2024-09-30, this field will be 2023-09-01. It can be null if no previous history for that deal is found. - name: previous_13_month_first_day_month data_type: date description: | Informative field. It indicates the first day of the previous month with respect to date, but on the previous year. If date = 2024-09-30, this field will be 2023-08-01. It can be null if no previous history for that deal is found. - name: aggregated_revenue_from_first_day_month data_type: date description: | Informative field. It indicates the first day of the month from the lower bound range in which the revenue aggregation is computed. The aggregation uses the previous 12 months in which we know the revenue, thus: If date = 2024-09-30, this field will be 2023-09-01. It can be null if no previous history for that deal is found. - name: aggregated_revenue_to_first_day_month data_type: date description: | Informative field. It indicates the first day of the month from the upper bound range in which the revenue aggregation is computed. The aggregation uses the previous 12 months in which we know the revenue, thus: If date = 2024-09-30, this field will be 2023-08-01. It can be null if no previous history for that deal is found. - name: given_month_revenue_in_gbp data_type: decimal description: | Monthly value representing revenue in GBP for a specific deal. This value corresponds to the given month. This value can be negative, but not null. data_tests: - not_null - name: previous_1_month_revenue_in_gbp data_type: decimal description: | Monthly value representing revenue in GBP for a specific deal. This value corresponds to the previous month. This value can be negative. This value can be null, thus indicating that no history is available. - name: previous_2_month_revenue_in_gbp data_type: decimal description: | Monthly value representing revenue in GBP for a specific deal. This value corresponds to the monthly amount generated 2 months ago This value can be negative. This value can be null, thus indicating that no history is available. - name: previous_12_month_revenue_in_gbp data_type: decimal description: | Monthly value representing revenue in GBP for a specific deal. This value corresponds to the monthly amount generated 12 months ago. This value can be negative. This value can be null, thus indicating that no history is available. - name: previous_13_month_revenue_in_gbp data_type: decimal description: | Monthly value representing revenue in GBP for a specific deal. This value corresponds to the monthly amount generated 13 months ago. This value can be negative. This value can be null, thus indicating that no history is available. - name: mom_revenue_growth data_type: decimal description: | Relative increment of the revenue generated in the current month with respect to the one generated in the previous month. It can be null if any revenue used in the computation is null or it's negative. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: -1 strictly: false - name: mom_1_month_shift_revenue_growth data_type: decimal description: | Relative increment of the revenue generated in the previous month with respect to the one generated 2 months ago. It can be null if any revenue used in the computation is null or it's negative. This field is used for the growth score computation. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: -1 strictly: false - name: yoy_revenue_growth data_type: decimal description: | Relative increment of the revenue generated in the current month with respect to the one generated 12 months ago. It can be null if any revenue used in the computation is null or it's negative. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: -1 strictly: false - name: yoy_1_month_shift_revenue_growth data_type: decimal description: | Relative increment of the revenue generated in the previous month with respect to the one generated 13 months ago. It can be null if any revenue used in the computation is null or it's negative. This field is used for the growth score computation. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: -1 strictly: false - name: given_month_created_bookings data_type: integer description: | Monthly value representing created bookings for a specific deal. This value corresponds to the given month. This value cannot be null. data_tests: - not_null - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: previous_1_month_created_bookings data_type: integer description: | Monthly value representing created bookings for a specific deal. This value corresponds to the previous month. This value can be null, thus indicating that no history is available. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: previous_12_month_created_bookings data_type: integer description: | Monthly value representing created bookings for a specific deal. This value corresponds to monthly amount generated 12 months ago. This value can be null, thus indicating that no history is available. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: mom_created_bookings_growth data_type: decimal description: | Relative increment of the bookings created in the current month with respect to the ones created in the previous month. It can be null if the bookings created in the previous month are null. This field is used for the growth score computation. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: -1 strictly: false - name: yoy_created_bookings_growth data_type: decimal description: | Relative increment of the bookings created in the current month with respect to the ones created 12 months ago. It can be null if the bookings created 12 months ago are null. This field is used for the growth score computation. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: -1 strictly: false - name: given_month_listings_booked_in_month data_type: integer description: | Monthly value representing the listings booked in month for a specific deal. This value corresponds to the given month. This value cannot be null. data_tests: - not_null - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: previous_1_month_listings_booked_in_month data_type: integer description: | Monthly value representing the listings booked in month for a specific deal. This value corresponds to the previous month. This value can be null, thus indicating that no history is available. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: previous_12_month_listings_booked_in_month data_type: integer description: | Monthly value representing the listings booked in month for a specific deal. This value corresponds to monthly amount generated 12 months ago. This value can be null, thus indicating that no history is available. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: mom_listings_booked_in_month_growth data_type: decimal description: | Relative increment of the the listings booked in month in the current month with respect to the ones of the previous month. It can be null if the listings booked in month in the previous month are null. This field is used for the growth score computation. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: -1 strictly: false - name: yoy_listings_booked_in_month_growth data_type: decimal description: | Relative increment of the listings booked in month in the current month with respect to the ones of 12 months ago. It can be null if the listings booked in month of 12 months ago are null. This field is used for the growth score computation. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: -1 strictly: false - name: deal_revenue_12_months_window data_type: decimal description: | Total aggregated revenue in GBP generated by a deal in the months from the period ranging from the aggregated_revenue_from_first_day_month to aggregated_revenue_to_first_day_month. It can be negative if the sum is negative. It cannot be null. data_tests: - not_null - name: effective_deal_revenue_12_months_window data_type: decimal description: | Effective aggregated revenue in GBP generated by a deal in the months from the period ranging from the aggregated_revenue_from_first_day_month to aggregated_revenue_to_first_day_month. All negative monthly revenue values are settled as 0, thus this value should not be reported. It is used for the deal contribution share with respect to the global revenue. It cannot be null. data_tests: - not_null - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: effective_global_revenue_12_months_window data_type: decimal description: | Effective aggregated revenue in GBP generated by all deals in the months from the period ranging from the aggregated_revenue_from_first_day_month to aggregated_revenue_to_first_day_month. All negative monthly revenue values are settled as 0, thus this value should not be reported. It is used for the deal contribution share with respect to the global revenue. It cannot be null. data_tests: - not_null - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: deal_contribution_share_to_global_revenue data_type: decimal description: | Represents the size of the deal in terms of revenue. In other words, what's the percentage of the global revenue that can be attributed to this deal. It cannot be null. data_tests: - not_null - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: deal_contribution_rank_to_global_revenue data_type: integer description: | Represents the ordered list of deals by descending size in terms of revenue. If more than one deal have the same share, the order is not under control. It cannot be null. data_tests: - not_null - name: deal_created_bookings_12_months_window data_type: integer description: | Total created bookings generated by a deal in the months from the period ranging from the aggregated_revenue_from_first_day_month to aggregated_revenue_to_first_day_month. It cannot be null. data_tests: - not_null - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: global_created_bookings_12_months_window data_type: integer description: | Total created bookings generated by any deal in the months from the period ranging from the aggregated_revenue_from_first_day_month to aggregated_revenue_to_first_day_month. It is used for the deal contribution share with respect to the global created bookings. It cannot be null. data_tests: - not_null - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: deal_contribution_share_to_global_created_bookings data_type: decimal description: | Represents the size of the deal in terms of created bookings. In other words, what's the percentage of the global created bookings that can be attributed to this deal. It cannot be null. data_tests: - not_null - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: deal_contribution_rank_to_global_created_bookings data_type: integer description: | Represents the ordered list of deals by descending size in terms of created bookings. If more than one deal have the same share, the order is not under control. It cannot be null. data_tests: - not_null - name: deal_avg_listings_booked_in_month_12_months_window data_type: decimal description: | Average listings booked in month by a deal in the months from the period ranging from the aggregated_revenue_from_first_day_month to aggregated_revenue_to_first_day_month. It cannot be null. data_tests: - not_null - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: global_avg_listings_booked_in_month_12_months_window data_type: decimal description: | Sum of the average listings booked in month by any deal in the months from the period ranging from the aggregated_revenue_from_first_day_month to aggregated_revenue_to_first_day_month. It is used for the deal contribution share with respect to the global average listings booked in month. It cannot be null. data_tests: - not_null - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: deal_contribution_share_to_global_avg_listings_booked_in_month data_type: decimal description: | Represents the size of the deal in terms of average listings booked in month. In other words, what's the percentage of the global average listings booked in month that can be attributed to this deal. It cannot be null. data_tests: - not_null - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: deal_contribution_rank_to_global_avg_listings_booked_in_month data_type: decimal description: | Represents the ordered list of deals by descending size in terms of average listings booked in month. If more than one deal have the same share, the order is not under control. It cannot be null. data_tests: - not_null - name: avg_mom_growth_score data_type: decimal description: | Represents the average score of MoM growth of created bookings, MoM growth of listings booked in month and MoM shifted by one month of revenue. It indicates the tendency of growth of the deal without taking into account its revenue size. It cannot be null. data_tests: - not_null - name: avg_yoy_growth_score data_type: decimal description: | Represents the average score of YoY growth of created bookings, YoY growth of listings booked in month and YoY shifted by one month of revenue. It indicates the tendency of growth of the deal without taking into account its revenue size. It cannot be null. data_tests: - not_null - name: avg_growth_score data_type: decimal description: | Represents the average score of YoY and MoM growth of created bookings, YoY and MoM growth of listings booked in month and YoY and MoM shifted by one month of revenue. It indicates the tendency of growth of the deal without taking into account its revenue size. It cannot be null. data_tests: - not_null - name: weighted_avg_growth_score data_type: decimal description: | It's the weighted version of avg_growth_score that takes into account the client size by using the revenue contribution share of that deal to the global amount. It's the main indicator towards measuring both growth (if positive) or decay (if negative) while weighting the financial impact this deal tendency can have. data_tests: - not_null - name: categorisation_weighted_avg_growth_score data_type: string description: | Discrete categorisation of weighted_avg_growth_score. It helps easily identifying which accounts are top losers, losers, flat, winners and top winners. Currently the categorisation is based on the score itself rather than selecting a top up/down. data_tests: - not_null - accepted_values: values: - MAJOR DECLINE - DECLINE - FLAT - GAIN - MAJOR GAIN - UNSET - name: int_edeposit_and_athena_verifications description: "This table holds records on verifications for Guesty and Edeposit bookings. It contains details on validations checked on the guests, guest information and some booking details like checkin-checkout date or the status of the verification. The id values found here are completely unrelated to the ones found in Core DWH. Note that id_verifications and booking_id should normally be 1 to 1. Though there are exception, the API will accept a duplicate booking and the users will be charged for it. A duplicate would return a unique id_verification." columns: - name: id_verification data_type: text description: "unique Superhog generated id for this verification" data_tests: - unique - not_null - name: id_booking data_type: text description: "unique Superhog generated id for a booking. note that this could be duplicated and both will be charged, it's up to the user to no generate duplicate verifications" - name: id_user_partner data_type: text description: "unique Superhog generated id for partner" data_tests: - not_null - name: id_accommodation data_type: text description: "unique Superhog generated id for a listing" - name: version data_type: text description: "value to identify if it is Guesty (V1) or E-deposit (V2)" data_tests: - accepted_values: values: - V1 - V2 - name: verification_source data_type: text description: "source of the verification for the booking" data_tests: - accepted_values: values: - Guesty - Edeposit - name: verification_status data_type: text description: "status of the verification" - name: nightly_fee_local data_type: double precision description: "fee in local currency charged per night" - name: number_nights data_type: integer description: "number of nights for the booking" - name: total_fee_local data_type: double precision description: "total fee in local currency for the booking" - name: email_flag data_type: text description: "screening result for email" - name: phone_flag data_type: text description: "screening result for phone" - name: watch_list data_type: text description: "screening result of the guest" - name: channel data_type: text description: "" - name: checkin_at_utc data_type: timestamp without time zone description: "Timestamp of checkin for the booking" - name: checkin_date_utc data_type: date description: "Date of checkin for the booking" - name: checkout_at_utc data_type: timestamp without time zone description: "Timestamp of checkout for the booking" - name: checkout_date_utc data_type: date description: "Date of checkout for the booking" - name: is_cancelled data_type: boolean description: "" - name: cancelled_at_utc data_type: timestamp without time zone description: "Timestamp of cancellation of the booking" - name: cancelled_date_utc data_type: date description: "Date of cancellation for the booking" - name: user_email data_type: text description: "" - name: guest_email data_type: text description: "" - name: guest_last_name data_type: text description: "" - name: guest_first_name data_type: text description: "" - name: guest_telephone data_type: text description: "" - name: company_name data_type: text description: "" - name: property_manager_name data_type: text description: "" - name: property_manager_email data_type: text description: "" - name: listing_name data_type: text description: "" - name: listing_address data_type: text description: "" - name: listing_town data_type: text description: "" - name: listing_country data_type: text description: "" - name: listing_postcode data_type: text description: "" - name: pets_allowed data_type: boolean description: "" - name: level_of_protection_amount data_type: integer description: "" - name: level_of_protection_currency data_type: text description: "" - name: status_updated_at_utc data_type: timestamp without time zone description: "Timestamp when status was last updated" - name: status_updated_date_utc data_type: date description: "Date of last status update of the verification" - name: updated_at_utc data_type: timestamp without time zone description: "Timestamp of last updated of the verification" - name: updated_date_utc data_type: date description: "Date of last update of the verification" - name: athena_creation_at_utc data_type: timestamp without time zone description: "Athena timestamp referring to when the booking was created. It's provided by Guesty, but is not mandatory. In case of doubt use created_at_utc or created_date_utc fields" - name: athena_creation_date_utc data_type: date description: "Athena date referring to when the booking was created. It's provided by Guesty, but is not mandatory. In case of doubt use created_at_utc or created_date_utc fields" - name: created_at_utc data_type: timestamp without time zone description: "Timestamp of creation of the verification in the system" - name: created_date_utc data_type: date description: "Date of creation of the verification in the system" - name: int_monthly_aggregated_metrics_history_by_deal_by_time_window description: | This model aggregates monthly historic metrics for deals over different time windows. It provides insights into bookings, listings, revenue, retained revenue and additional metrics. The data is segmented by deal and time window for detailed analysis. data_tests: - dbt_utils.unique_combination_of_columns: combination_of_columns: - date - id_deal - time_window - dbt_expectations.expect_column_pair_values_to_be_equal: column_A: total_revenue_in_gbp column_B: invoiced_revenue_in_gbp + guest_payments_in_gbp - dbt_expectations.expect_column_pair_values_to_be_equal: column_A: revenue_retained_in_gbp column_B: total_revenue_in_gbp + waiver_paid_back_to_host_in_gbp - dbt_expectations.expect_column_pair_values_to_be_equal: column_A: revenue_retained_post_resolutions_in_gbp column_B: revenue_retained_in_gbp + host_resolution_amount_paid_in_gbp - dbt_expectations.expect_column_pair_values_to_be_equal: column_A: guest_revenue_retained_in_gbp column_B: guest_payments_in_gbp + waiver_paid_back_to_host_in_gbp columns: - name: date data_type: date description: | The last day of the month or yesterday for historic metrics. It's the same date as for KPIs related models. data_tests: - not_null - name: id_deal data_type: character varying description: Id of the deal associated to the host. data_tests: - not_null - name: time_window data_type: character varying description: | Identifier of the time window used for the aggregation of the metrics. data_tests: - not_null - accepted_values: values: - All History - Previous 12 months - Previous 6 months - Previous 3 months - Previous month - name: client_type data_type: string description: | Type of client. It can be either PLATFORM or API. data_tests: - not_null - accepted_values: values: - PLATFORM - API - name: business_scope data_type: string description: | Business scope identifying the metric source. data_tests: - not_null - accepted_values: values: - "Old Dash" - "New Dash" - "API" - "UNSET" - name: metric_from_date data_type: date description: | The first day of the month corresponding to the lower bound range in which the metric is computed. It can be null if there's no previous history for that deal. It can vary from deal to deal depending on the number of months the deal has been active. - name: metric_to_date data_type: date description: | The first day of the month corresponding to the upper bound range in which the metric is computed. It can be null if there's no previous history for that deal. - name: main_deal_name data_type: string description: | Main name for this ID deal. data_tests: - not_null - name: has_active_pms data_type: boolean description: | Does the deal have an active associated PMS. data_tests: - not_null - name: active_pms_list data_type: string description: | Name of the active PMS associated with the deal. It can have more than one PMS associated with it. It can be null if it doesn't have any PMS associated. - name: active_accommodations_per_deal_segmentation data_type: string description: | Segment value based on the number of listings booked in 12 months for a given deal and date. data_tests: - not_null - accepted_values: values: - "0" - "01-05" - "06-20" - "21-60" - "61+" - "UNSET" - name: main_billing_country_iso_3_per_deal data_type: string description: | ISO 3166-1 alpha-3 main country code in which the Deal is billed. In some cases it's null. - name: deal_lifecycle_state data_type: string description: | Lifecycle state of the deal. - name: deal_hubspot_stage data_type: string description: | Hubspot stage of the deal. In some cases it's null. - name: account_manager data_type: string description: | Account manager of the deal. In some cases it's null. - name: live_date_utc data_type: date description: | Date when the deal went live according to Hubspot. In some cases it's null. - name: cancellation_date_utc data_type: date description: | Date when the deal was cancelled according to Hubspot. It can be null if the deal has never churned. - name: months_between_live_and_churn data_type: integer description: | Number of months between the live date and the churn date. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: last_contacted_date_utc data_type: date description: | Date when the deal was last contacted according to Hubspot. - name: days_between_last_contacted_and_churn data_type: integer description: | Number of days between the last contacted date and the churn date. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: amount_times_contacted data_type: integer description: | Number of times the deal was contacted according to Hubspot. - name: cancellation_category data_type: text description: Categorization as to why they cancelled the account - name: cancellation_details data_type: text description: Free text with additional comments on why they cancelled the account - name: is_churning data_type: boolean description: | Flag to identify if the deal is churning or not. - name: churn_reason data_type: string description: | Reason why the deal is churning. data_tests: - accepted_values: values: - "INACTIVITY" - "ACCOUNT CANCELLATION" - name: created_bookings data_type: integer description: | Total amount of bookings created by the deal in the time window. It can be null if no bookings were created. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: listings_booked_in_month data_type: decimal description: | Average amount of listings booked in month by the deal in the time window. It can be null if no listings were booked. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: total_revenue_in_gbp data_type: decimal description: | Total revenue in GBP generated by the deal in the time window. It can be null if no revenue was generated. It can be negative. - name: revenue_retained_in_gbp data_type: decimal description: | Total revenue in GBP retained by the deal in the time window, post host takeaway waivers. It can be null if no revenue was retained. It can be negative. - name: waiver_paid_back_to_host_in_gbp data_type: decimal description: | Total amount of waivers paid back to the host in GBP in the time window. It can be null if no waivers were paid back. It's displayed as a negative value. - name: invoiced_revenue_in_gbp data_type: decimal description: | Total amount of revenue in GBP invoiced to the host in the time window. It considers both Operator revenue as well as APIs revenue. It can be null if no revenue was invoiced to the host. It can be negative. - name: guest_payments_in_gbp data_type: decimal description: | Total amount of payments in GBP made by the guest in the time window. It can be null if no payments were made by the guest. It can be negative. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: guest_revenue_retained_in_gbp data_type: decimal description: | Total amount of revenue in GBP retained by the deal from the guest in the time window, post host takeaway waivers. It can be null if no revenue was retained from the guest. It can be negative. - name: host_resolution_payment_count data_type: integer description: | Total amount of resolution payments made to the host in the time window. It can be null if no resolution payments were made by the host. data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: host_resolution_amount_paid_in_gbp data_type: decimal description: | Total amount of resolution payments made to the host in GBP in the time window. It can be null if no resolution payments were made by the host. It can be negative. It's displayed as a negative value. In some extreme cases, it can be higher than 0. - name: revenue_retained_post_resolutions_in_gbp data_type: decimal description: | Total amount of revenue in GBP retained by the deal post waiver payouts and resolution payouts in the time window. It can be null if no revenue was retained post resolution payments. It can be negative, thus indicating that we are losing money. - name: int_deals_consolidation description: | "This table contains all deal ids from different sources used in Superhog. It contains the source (Hubspot, Xero or Core), the id_deal and the name" columns: - name: id_deal data_type: character varying description: "Unique ID for this deal." data_tests: - unique - not_null - name: core_company_name data_type: character varying description: "Company name of the deal as shown in Core." - name: core_company_name_count data_type: integer description: "Count of distinct names the deal has in Core. It might be the case that a deal has ony NULL value for a name, so the count will be 0" data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: hubspot_deal_name data_type: character varying description: "Name of the deal as shown in Hubspot." - name: hubspot_deal_name_count data_type: integer description: "Count of distinct names the deal has in Hubspot. It might be the case that a deal has ony NULL value for a name, so the count will be 0" data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: xero_contact_name data_type: character varying description: "Contact name of the deal as shown in Xero." - name: xero_contact_name_count data_type: integer description: "Count of distinct names the deal has in Xero. It might be the case that a deal has ony NULL value for a name, so the count will be 0" data_tests: - dbt_expectations.expect_column_values_to_be_between: min_value: 0 strictly: false - name: is_deal_in_core data_type: boolean description: "Flag to indicate if the deal is in Core." - name: is_deal_in_hubspot data_type: boolean description: "Flag to indicate if the deal is in Hubspot." - name: is_deal_in_xero data_type: boolean description: "Flag to indicate if the deal is in Xero." - name: int_ytd_mtd_main_metrics_overview description: | This model provides a high-level overview of the main metrics for the month-to-date and financial year-to-date periods. data_tests: - dbt_utils.unique_combination_of_columns: combination_of_columns: - date - dimension - dimension_value - dbt_expectations.expect_column_pair_values_to_be_equal: column_A: current_month_mtd_revenue_retained_post_resolutions_in_gbp column_B: current_month_mtd_total_revenue_in_gbp + current_month_mtd_xero_waiver_paid_back_to_host_in_gbp + current_month_mtd_xero_host_resolution_amount_paid_in_gbp - dbt_expectations.expect_column_pair_values_to_be_equal: column_A: current_ytd_revenue_retained_post_resolutions_in_gbp column_B: current_ytd_total_revenue_in_gbp + current_ytd_xero_waiver_paid_back_to_host_in_gbp + current_ytd_xero_host_resolution_amount_paid_in_gbp - dbt_expectations.expect_column_pair_values_to_be_equal: column_A: current_month_mtd_total_revenue_in_gbp column_B: current_month_mtd_total_guest_payments_in_gbp + current_month_mtd_xero_apis_net_fees_in_gbp + current_month_mtd_xero_operator_net_fees_in_gbp - dbt_expectations.expect_column_pair_values_to_be_equal: column_A: current_ytd_total_revenue_in_gbp column_B: current_ytd_total_guest_payments_in_gbp + current_ytd_xero_apis_net_fees_in_gbp + current_ytd_xero_operator_net_fees_in_gbp columns: - name: date data_type: date description: | The date for the month-to-date and year-to-date metrics. data_tests: - not_null - name: dimension data_type: string description: | The dimension or granularity of the metrics. data_tests: - accepted_values: values: - global - name: dimension_value data_type: string description: | The value or segment available for the selected dimension. data_tests: - not_null - name: calendar_year data_type: integer description: | The calendar year associated with the data. - name: financial_year data_type: integer description: | The financial year associated with the data. - name: previous_year_date data_type: date description: | The equivalent date in the previous year. - name: current_month_mtd_billable_bookings data_type: integer description: | Total billable bookings for the current month MTD. - name: current_month_mtd_churning_deals data_type: integer description: | Number of churning deals for the current month MTD. - name: current_month_mtd_live_deals data_type: integer description: | Number of live deals for the current month MTD. - name: current_month_mtd_new_deals data_type: integer description: | Number of new deals for the current month MTD. - name: current_month_mtd_operator_revenue_per_billable_booking data_type: numeric description: | Operator revenue per billable booking for the current month MTD. - name: current_month_mtd_resolutions_payout_rate data_type: numeric description: | Resolutions payout rate for the current month MTD. - name: current_month_mtd_revenue_retained_post_resolutions_in_gbp data_type: numeric description: | Revenue retained after resolutions for the current month MTD in GBP. - name: current_month_mtd_total_guest_payments_in_gbp data_type: numeric description: | Total guest payments for the current month MTD in GBP. - name: current_month_mtd_total_revenue_in_gbp data_type: numeric description: | Total revenue for the current month MTD in GBP. - name: current_month_mtd_waiver_payments_in_gbp data_type: numeric description: | Total waiver payments made in GBP for the current month MTD. - name: current_month_mtd_waiver_payout_rate data_type: numeric description: | Waiver payout rate for the current month MTD. - name: current_month_mtd_waiver_revenue_per_billable_booking data_type: numeric description: | Waiver revenue per billable booking for the current month MTD. - name: current_month_mtd_xero_apis_net_fees_in_gbp data_type: numeric description: | Net fees for APIs processed through Xero for the current month MTD in GBP. - name: current_month_mtd_xero_host_resolution_amount_paid_in_gbp data_type: numeric description: | Amount paid to hosts for resolutions processed through Xero for the current month MTD in GBP. - name: current_month_mtd_xero_operator_net_fees_in_gbp data_type: numeric description: | Net fees for operators processed through Xero for the current month MTD in GBP. - name: current_month_mtd_xero_waiver_paid_back_to_host_in_gbp data_type: numeric description: | Waiver amounts paid back to hosts via Xero for the current month MTD in GBP. - name: current_month_mtd_total_revenue_churn_12m data_type: numeric description: | Total revenue in the last 12 months that was generated by deals that have churned in the current month MTD. - name: current_month_mtd_total_revenue_global_12m data_type: numeric description: | Total revenue in the last 12 months that was generated by any deal, indistinctly of it being active, churn, etc. for the current month MTD. This is only used to compute the churn rate. - name: current_month_mtd_total_revenue_churn_rate data_type: numeric description: | Total revenue churn rate for the current month MTD. - name: current_month_mtd_booking_net_fees_in_gbp data_type: numeric description: | Total Booking net fees in gbp for the current month MTD. - name: current_month_mtd_booking_net_fees_per_billable_booking data_type: numeric description: | Total Booking net fees per billable booking for the current month MTD. - name: previous_year_mtd_billable_bookings data_type: integer description: | Total billable bookings for the previous year (12 months ago) MTD. - name: previous_year_mtd_churning_deals data_type: integer description: | Number of churning deals for the previous year (12 months ago) MTD. - name: previous_year_mtd_live_deals data_type: integer description: | Number of live deals for the previous year (12 months ago) MTD. - name: previous_year_mtd_new_deals data_type: integer description: | Number of new deals for the previous year (12 months ago) MTD. - name: previous_year_mtd_operator_revenue_per_billable_booking data_type: numeric description: | Operator revenue per billable booking for the previous year (12 months ago) MTD. - name: previous_year_mtd_resolutions_payout_rate data_type: numeric description: | Resolutions payout rate for the previous year (12 months ago) MTD. - name: previous_year_mtd_revenue_retained_post_resolutions_in_gbp data_type: numeric description: | Revenue retained after resolutions for the previous year (12 months ago) MTD in GBP. - name: previous_year_mtd_total_guest_payments_in_gbp data_type: numeric description: | Total guest payments for the previous year (12 months ago) MTD in GBP. - name: previous_year_mtd_total_revenue_in_gbp data_type: numeric description: | Total revenue for the previous year (12 months ago) MTD in GBP. - name: previous_year_mtd_waiver_payments_in_gbp data_type: numeric description: | Total waiver payments made in GBP for the previous year (12 months ago) MTD. - name: previous_year_mtd_waiver_payout_rate data_type: numeric description: | Waiver payout rate for the previous year (12 months ago) MTD. - name: previous_year_mtd_waiver_revenue_per_billable_booking data_type: numeric description: | Waiver revenue per billable booking for the previous year (12 months ago) MTD. - name: previous_year_mtd_xero_apis_net_fees_in_gbp data_type: numeric description: | Net fees for APIs processed through Xero for the previous year (12 months ago) MTD in GBP. - name: previous_year_mtd_xero_host_resolution_amount_paid_in_gbp data_type: numeric description: | Amount paid to hosts for resolutions processed through Xero for the previous year (12 months ago) MTD in GBP. - name: previous_year_mtd_xero_operator_net_fees_in_gbp data_type: numeric description: | Net fees for operators processed through Xero for the previous year (12 months ago) MTD in GBP. - name: previous_year_mtd_xero_waiver_paid_back_to_host_in_gbp data_type: numeric description: | Waiver amounts paid back to hosts via Xero for the previous year (12 months ago) MTD in GBP. - name: previous_year_mtd_total_revenue_churn_12m data_type: numeric description: | Total revenue in the last 12 months that was generated by deals that have churned in the previous year (12 months ago) MTD. - name: previous_year_mtd_total_revenue_global_12m data_type: numeric description: | Total revenue generated globally in the last 12 months for the previous year (12 months ago) MTD. This is only used to compute the churn rate. - name: previous_year_mtd_total_revenue_churn_rate data_type: numeric description: | Total revenue churn rate for the previous year (12 months ago) MTD. - name: previous_year_mtd_booking_net_fees_in_gbp data_type: numeric description: | Total Booking net fees in gbp for the previous year (12 months ago) MTD. - name: previous_year_mtd_booking_net_fees_per_billable_booking data_type: numeric description: | Total Booking net fees per billable booking for the previous year (12 months ago) MTD. - name: current_ytd_billable_bookings data_type: integer description: | Total billable bookings for the current financial year YTD. - name: current_ytd_churning_deals data_type: integer description: | Number of churning deals for the current financial year YTD. - name: current_ytd_live_deals data_type: integer description: | Number of live deals for the current financial year YTD. - name: current_ytd_new_deals data_type: integer description: | Number of new deals for the current financial year YTD. - name: current_ytd_operator_revenue_per_billable_booking data_type: numeric description: | Operator revenue per billable booking for the current financial year YTD. - name: current_ytd_resolutions_payout_rate data_type: numeric description: | Resolutions payout rate for the current financial year YTD. - name: current_ytd_revenue_retained_post_resolutions_in_gbp data_type: numeric description: | Revenue retained after resolutions for the current financial year YTD in GBP. - name: current_ytd_total_guest_payments_in_gbp data_type: numeric description: | Total guest payments for the current financial year YTD in GBP. - name: current_ytd_total_revenue_in_gbp data_type: numeric description: | Total revenue for the current financial year YTD in GBP. - name: current_ytd_waiver_payments_in_gbp data_type: numeric description: | Total waiver payments made in GBP for the current financial year YTD. - name: current_ytd_waiver_payout_rate data_type: numeric description: | Waiver payout rate for the current financial year YTD. - name: current_ytd_waiver_revenue_per_billable_booking data_type: numeric description: | Waiver revenue per billable booking for the current financial year YTD. - name: current_ytd_xero_apis_net_fees_in_gbp data_type: numeric description: | Net fees for APIs processed through Xero for the current financial year YTD in GBP. - name: current_ytd_xero_host_resolution_amount_paid_in_gbp data_type: numeric description: | Amount paid to hosts for resolutions processed through Xero for the current financial year YTD in GBP. - name: current_ytd_xero_operator_net_fees_in_gbp data_type: numeric description: | Net fees for operators processed through Xero for the current financial year YTD in GBP. - name: current_ytd_xero_waiver_paid_back_to_host_in_gbp data_type: numeric description: | Waiver amounts paid back to hosts via Xero for the current financial year YTD in GBP. - name: current_ytd_total_revenue_churn_12m data_type: numeric description: | Total revenue in the last 12 months that was generated by deals that have churned in the period of the current financial year YTD. - name: current_ytd_total_revenue_global_12m data_type: numeric description: | Total revenue generated globally in the last 12 months for the current financial year YTD. This is only used to compute the churn rate. - name: current_ytd_total_revenue_churn_rate data_type: numeric description: | Total revenue churn rate for the current financial year YTD. - name: current_ytd_booking_net_fees_in_gbp data_type: numeric description: | Total booking net fees in gbp for the current financial year YTD. - name: current_ytd_booking_net_fees_per_billable_booking data_type: numeric description: | Total booking net fees per billable booking for the current financial year YTD. - name: previous_ytd_billable_bookings data_type: integer description: | Total billable bookings for the previous financial year YTD. - name: previous_ytd_churning_deals data_type: integer description: | Number of churning deals for the previous financial year YTD. - name: previous_ytd_live_deals data_type: integer description: | Number of live deals for the previous financial year YTD. - name: previous_ytd_new_deals data_type: integer description: | Number of new deals for the previous financial year YTD. - name: previous_ytd_operator_revenue_per_billable_booking data_type: numeric description: | Operator revenue per billable booking for the previous financial year YTD. - name: previous_ytd_resolutions_payout_rate data_type: numeric description: | Resolutions payout rate for the previous financial year YTD. - name: previous_ytd_revenue_retained_post_resolutions_in_gbp data_type: numeric description: | Revenue retained after resolutions for the previous financial year YTD in GBP. - name: previous_ytd_total_guest_payments_in_gbp data_type: numeric description: | Total guest payments for the previous financial year YTD in GBP. - name: previous_ytd_total_revenue_in_gbp data_type: numeric description: | Total revenue for the previous financial year YTD in GBP. - name: previous_ytd_waiver_payments_in_gbp data_type: numeric description: | Total waiver payments made in GBP for the previous financial year YTD. - name: previous_ytd_waiver_payout_rate data_type: numeric description: | Waiver payout rate for the previous financial year YTD. - name: previous_ytd_waiver_revenue_per_billable_booking data_type: numeric description: | Waiver revenue per billable booking for the previous financial year YTD. - name: previous_ytd_xero_apis_net_fees_in_gbp data_type: numeric description: | Net fees for APIs processed through Xero for the previous financial year YTD in GBP. - name: previous_ytd_xero_host_resolution_amount_paid_in_gbp data_type: numeric description: | Amount paid to hosts for resolutions processed through Xero for the previous financial year YTD in GBP. - name: previous_ytd_xero_operator_net_fees_in_gbp data_type: numeric description: | Net fees for operators processed through Xero for the previous financial year YTD in GBP. - name: previous_ytd_xero_waiver_paid_back_to_host_in_gbp data_type: numeric description: | Waiver amounts paid back to hosts via Xero for the previous financial year YTD in GBP. - name: previous_ytd_total_revenue_churn_12m data_type: numeric description: | Total revenue in the last 12 months that was generated by deals that have churned in the period of the previous financial year YTD. - name: previous_ytd_total_revenue_global_12m data_type: numeric description: | Total revenue generated globally in the last 12 months for the previous financial year YTD. This is only used to compute the churn rate. - name: previous_ytd_total_revenue_churn_rate data_type: numeric description: | Total revenue churn rate for the previous financial year YTD. - name: previous_ytd_booking_net_fees_in_gbp data_type: numeric description: | Total booking net fees in gbp for the previous financial year YTD. - name: previous_ytd_booking_net_fees_per_billable_booking data_type: numeric description: | Total booking net fees per billable booking for the previous financial year YTD. - name: previous_month_eom_billable_bookings data_type: integer description: | Total billable bookings for the previous month, at the end of the month. - name: previous_month_eom_churning_deals data_type: integer description: | Number of churning deals for the previous month, at the end of the month. - name: previous_month_eom_live_deals data_type: integer description: | Number of live deals for the previous month, at the end of the month. - name: previous_month_eom_new_deals data_type: integer description: | Number of new deals for the previous month, at the end of the month. - name: previous_month_eom_operator_revenue_per_billable_booking data_type: numeric description: | Operator revenue per billable booking for the previous month, at the end of the month. - name: previous_month_eom_resolutions_payout_rate data_type: numeric description: | Resolutions payout rate for the previous month, at the end of the month. - name: previous_month_eom_revenue_retained_post_resolutions_in_gbp data_type: numeric description: | Revenue retained after resolutions for the previous month, at the end of the month in GBP. - name: previous_month_eom_total_guest_payments_in_gbp data_type: numeric description: | Total guest payments for the previous month, at the end of the month in GBP. - name: previous_month_eom_total_revenue_in_gbp data_type: numeric description: | Total revenue for the previous month, at the end of the month in GBP. - name: previous_month_eom_waiver_payments_in_gbp data_type: numeric description: | Total waiver payments made in GBP for the previous month, at the end of the month. - name: previous_month_eom_waiver_payout_rate data_type: numeric description: | Waiver payout rate for the previous month, at the end of the month. - name: previous_month_eom_waiver_revenue_per_billable_booking data_type: numeric description: | Waiver revenue per billable booking for the previous month, at the end of the month. - name: previous_month_eom_xero_apis_net_fees_in_gbp data_type: numeric description: | Net fees for APIs processed through Xero for the previous month, at the end of the month in GBP. - name: previous_month_eom_xero_host_resolution_amount_paid_in_gbp data_type: numeric description: | Amount paid to hosts for resolutions processed through Xero for the previous month, at the end of the month in GBP. - name: previous_month_eom_xero_operator_net_fees_in_gbp data_type: numeric description: | Net fees for operators processed through Xero for the previous month, at the end of the month in GBP. - name: previous_month_eom_xero_waiver_paid_back_to_host_in_gbp data_type: numeric description: | Waiver amounts paid back to hosts via Xero for the previous month, at the end of the month in GBP. - name: previous_month_eom_total_revenue_churn_12m data_type: numeric description: | Total revenue in the last 12 months that was generated by deals that have churned in the previous month, at the end of the month, in GBP. - name: previous_month_eom_total_revenue_global_12m data_type: numeric description: | Total revenue generated globally in the last 12 months for the previous month, at the end of the month. This is only used to compute the churn rate. - name: previous_month_eom_total_revenue_churn_rate data_type: numeric description: | Total revenue churn rate for the previous month, at the end of the month. - name: previous_month_eom_booking_net_fees_in_gbp data_type: numeric description: | Total booking net fees in gbp for the previous month at the end of the month. - name: previous_month_eom_booking_net_fees_per_billable_booking data_type: numeric description: | Total booking net fees per billable booking for the previous month at the end of the month. - name: int_ytd_mtd_aggregated_main_metrics_overview description: | This model provides a high-level overview of the main metrics for the month-to-date and financial year-to-date periods. Data is aggregated at metric level, and provides evolutions current month MTD vs. previous month EOM, current month MTD vs. previous year MTD and current YTD vs. previous YTD. data_tests: - dbt_utils.unique_combination_of_columns: combination_of_columns: - date - dimension - dimension_value - metric_name - dbt_utils.unique_combination_of_columns: combination_of_columns: - date - dimension - dimension_value - id_metric columns: - name: date data_type: date description: The date for the month-to-date and year-to-date metrics. data_tests: - not_null - name: dimension data_type: string description: The dimension or granularity of the metrics. data_tests: - accepted_values: values: - global - name: dimension_value data_type: string description: The value or segment available for the selected dimension. data_tests: - not_null - name: calendar_year data_type: integer description: The calendar year associated with the data. data_tests: - not_null - name: financial_year data_type: integer description: The financial year associated with the data. data_tests: - not_null - name: previous_year_date data_type: date description: | The equivalent date in the previous year. It can be null if the metric is not available in the previous year - name: id_metric data_type: integer description: | Unique ID for this metric. It is preferable to use this ID when building a report to ensure changes in the metric name do not affect the report. data_tests: - not_null - name: metric_name data_type: string description: | Name of the metric. It is preferable to use the ID of the metric when building a report to ensure changes in the metric name do not affect the report. data_tests: - not_null - name: number_format data_type: string description: | Number format to display the metric in the report. data_tests: - not_null - accepted_values: values: - INTEGER - PERCENTAGE_2_DECIMALS - CURRENCY_GBP_INTEGER - CURRENCY_GBP_1_DECIMAL - name: display_exclusion data_type: string description: | Category to indicate if the metric requires a certain exclusion due to relying on not timely information. This will limit the display for reporting purposes. data_tests: - not_null - accepted_values: values: - NONE - INVOICING - ONGOING_MONTH - name: current_month_mtd data_type: numeric description: | Value of the metric for the current month MTD. - name: previous_month_eom data_type: numeric description: | Value of the metric for the previous month EOM. - name: previous_year_mtd data_type: numeric description: | Value of the metric for the previous year MTD. - name: current_year_ytd data_type: numeric description: | Value of the metric for the current year YTD. - name: previous_year_ytd data_type: numeric description: | Value of the metric for the previous year YTD. - name: diff_current_month_mtd_vs_previous_month_eom data_type: numeric description: | Difference between the current month MTD and the previous month EOM. - name: diff_current_month_mtd_vs_previous_year_mtd data_type: numeric description: | Difference between the current month MTD and the previous year MTD. - name: diff_current_ytd_vs_previous_ytd data_type: numeric description: | Difference between the current year YTD and the previous year YTD. - name: rel_diff_current_month_mtd_vs_previous_month_eom data_type: numeric description: | Relative difference between the current month MTD and the previous month EOM. - name: rel_diff_current_month_mtd_vs_previous_year_mtd data_type: numeric description: | Relative difference between the current month MTD and the previous year MTD. - name: rel_diff_current_ytd_vs_previous_ytd data_type: numeric description: | Relative difference between the current year YTD and the previous year YTD. - name: target_eom_value data_type: numeric description: | The EOM target value for this metric. This is the value that we aim to achieve by the end of the month. It can be null if the target is not available. - name: target_ytd_value data_type: numeric description: | The YTD target value for this metric. This is the cumulative value that we aim to achieve by the end of each month with respect to the beginning of the financial year, that will put us to reach the EOFY target. It can be null if the target is not available. - name: target_eofy_value data_type: numeric description: | The EOFY target value for this metric. This is the value that we aim to achieve by the end of the financial year. It can be null if the target is not available. - name: diff_current_month_mtd_vs_eom_target data_type: numeric description: | Difference between the current month MTD and the EOM target. It can be null if the target is not available. - name: diff_current_ytd_vs_ytd_target data_type: numeric description: | Difference between the current year YTD and the YTD target. It can be null if the target is not available. - name: diff_current_ytd_vs_eofy_target data_type: numeric description: | Difference between the current year YTD and the EOFY target. It can be null if the target is not available. - name: rel_diff_current_month_mtd_vs_eom_target data_type: numeric description: | Relative difference between the current month MTD and the EOM target. It can be null if the target is not available. - name: rel_diff_current_ytd_vs_ytd_target data_type: numeric description: | Relative difference between the current year YTD and the YTD target. It can be null if the target is not available. - name: achievement_rate_current_ytd_vs_eofy_target data_type: numeric description: | Achievement rate between the current year YTD and the EOFY target. It can be null if the target is not available. - name: rel_diff_with_sign_current_month_mtd_vs_previous_month_eom data_type: numeric description: | Relative difference between the current month MTD and the previous month EOM, with a sign to represent if the relative difference is good (positive) or bad (negative) for our business. - name: rel_diff_with_sign_current_month_mtd_vs_previous_year_mtd data_type: numeric description: | Relative difference between the current month MTD and the previous year MTD, with a sign to represent if the relative difference is good (positive) or bad (negative) for our business. - name: rel_diff_with_sign_current_ytd_vs_previous_ytd data_type: numeric description: | Relative difference between the current year YTD and the previous year YTD, with a sign to represent if the relative difference is good (positive) or bad (negative) for our business. - name: rel_diff_with_sign_current_month_mtd_vs_eom_target data_type: numeric description: | Relative difference between the current month MTD and the EOM target, with a sign to represent if the relative difference is good (positive) or bad (negative) for our business. - name: rel_diff_with_sign_current_ytd_vs_ytd_target data_type: numeric description: | Relative difference between the current year YTD and the YTD target, with a sign to represent if the relative difference is good (positive) or bad (negative) for our business. - name: int_mtd_aggregated_metrics_by_deal description: | This model aggregates the historic information of our business by providing different metrics at account level (by id_deal). Additionally it provides Deal attributes. Metrics displayed in the model range for the past 24 months. Also, churned accounts are available for historical values, until 3 months after the offboarding date. data_tests: - dbt_utils.unique_combination_of_columns: combination_of_columns: - date - metric - id_deal columns: - name: year data_type: int description: Year number of the given date. - name: month data_type: int description: Month number of the given date. - name: day data_type: int description: Day monthly number of the given date. - name: is_end_of_month data_type: boolean description: Is end of month, 1 for yes, 0 for no. - name: is_current_month data_type: boolean description: | Checks if the date is within the current executed month, 1 for yes, 0 for no. - name: is_end_of_month_or_yesterday data_type: boolean description: | Checks if the date is end of month or yesterday, 1 for yes, 0 for no. - name: first_day_month data_type: date description: | First day of the month corresponding to the date field. It comes from int_dates_mtd logic. - name: date data_type: date description: | Main date for the computation, that is used for filters. It comes from int_dates_mtd logic. data_tests: - not_null - name: id_deal data_type: string description: | Unique ID for a deal, or account. data_tests: - not_null - name: deal data_type: string description: | Combination of the ID and the Name of the deal. - name: active_accommodations_per_deal_segmentation data_type: string description: | Segment value based on the number of listings booked in 12 months for a given deal and date. - name: main_billing_country_iso_3_per_deal data_type: string description: | ISO 3166-1 alpha-3 main country code in which the Deal is billed. In some cases it's null. - name: business_scope data_type: string description: | Business scope identifying the metric source. - name: account_manager data_type: string description: | Account manager of the deal. In some cases it's null. - name: deal_lifecycle_state data_type: string description: | Lifecycle state of the deal. - name: metric data_type: text description: Name of the business metric. data_tests: - not_null - name: order_by data_type: integer description: | Order for displaying purposes. Null values are accepted, but keep in mind that then there's no default controlled display order. - name: number_format data_type: text description: Allows for grouping and formatting for displaying purposes. - name: value data_type: numeric description: | Numeric value (integer or decimal) that corresponds to the MTD computation of the metric at a given date. Note that if the month is not in progress, then this value corresponds to the monthly figure. - name: previous_year_value data_type: numeric description: | Numeric value (integer or decimal) that corresponds to the MTD computation of the metric on the previous year at a given date. - name: relative_increment data_type: numeric description: | Numeric value that corresponds to the relative increment between value and previous year value, following the computation: value / previous_year_value - 1. - name: relative_increment_with_sign_format data_type: numeric description: | Relative_increment value multiplied by -1 in case this metric's growth doesn't have a positive impact for Truvi, otherwise is equal to relative_increment. This value is specially created for formatting in PBI - name: display_exclusion data_type: string description: | Category to indicate if the metric requires a certain exclusion due to relying on not timely information. This will limit the display for reporting purposes. data_tests: - not_null - accepted_values: values: - NONE - INVOICING - ONGOING_MONTH