From 4958976733b95f5f112cb32bfe65b42b193cff5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oriol=20Roqu=C3=A9=20Paniagua?= Date: Mon, 17 Jun 2024 14:59:01 +0000 Subject: [PATCH] Merged PR 2053: Added number_format category in mtd_aggregated_metrics Added number_format category in mtd_aggregated_metrics Related work items: #17458 --- .../core/int_core__mtd_aggregated_metrics.sql | 177 +++++++++++++++--- models/intermediate/core/schema.yaml | 15 +- .../core/core__mtd_aggregated_metrics.sql | 1 + 3 files changed, 161 insertions(+), 32 deletions(-) diff --git a/models/intermediate/core/int_core__mtd_aggregated_metrics.sql b/models/intermediate/core/int_core__mtd_aggregated_metrics.sql index f4277f9..2188e7a 100644 --- a/models/intermediate/core/int_core__mtd_aggregated_metrics.sql +++ b/models/intermediate/core/int_core__mtd_aggregated_metrics.sql @@ -1,41 +1,156 @@ {% set metrics = [ - {'source': 'int_core__mtd_booking_metrics', 'order_by': 1, 'metric': 'Created Bookings', 'value': 'created_bookings', 'previous_year_value': 'previous_year_created_bookings', 'relative_increment': 'relative_increment_created_bookings'}, - {'source': 'int_core__mtd_booking_metrics', 'order_by': 2, 'metric': 'Checkout Bookings', 'value': 'check_out_bookings', 'previous_year_value': 'previous_year_check_out_bookings', 'relative_increment': 'relative_increment_check_out_bookings'}, - {'source': 'int_core__mtd_booking_metrics', 'order_by': 3, 'metric': 'Listings Booked in Month', 'value': 'listings_booked_in_month', 'previous_year_value': 'previous_year_listings_booked_in_month', 'relative_increment': 'relative_increment_listings_booked_in_month'}, - {'source': 'int_core__mtd_booking_metrics', 'order_by': 4, 'metric': 'Listings Booked in 6 Months', 'value': 'listings_booked_in_6_months', 'previous_year_value': 'previous_year_listings_booked_in_6_months', 'relative_increment': 'relative_increment_listings_booked_in_6_months'}, - {'source': 'int_core__mtd_booking_metrics', 'order_by': 5, 'metric': 'Listings Booked in 12 Months', 'value': 'listings_booked_in_12_months', 'previous_year_value': 'previous_year_listings_booked_in_12_months', 'relative_increment': 'relative_increment_listings_booked_in_12_months'}, - {'source': 'int_core__mtd_booking_metrics', 'order_by': 6, 'metric': 'Hosts Booked in Month', 'value': 'hosts_booked_in_month', 'previous_year_value': 'previous_year_hosts_booked_in_month', 'relative_increment': 'relative_increment_hosts_booked_in_month'}, - {'source': 'int_core__mtd_booking_metrics', 'order_by': 7, 'metric': 'Hosts Booked in 6 Months', 'value': 'hosts_booked_in_6_months', 'previous_year_value': 'previous_year_hosts_booked_in_6_months', 'relative_increment': 'relative_increment_hosts_booked_in_6_months'}, - {'source': 'int_core__mtd_booking_metrics', 'order_by': 8, 'metric': 'Hosts Booked in 12 Months', 'value': 'hosts_booked_in_12_months', 'previous_year_value': 'previous_year_hosts_booked_in_12_months', 'relative_increment': 'relative_increment_hosts_booked_in_12_months'}, - {'source': 'int_core__mtd_guest_journey_metrics', 'order_by': 9, 'metric': 'Guest Journey Created', 'value': 'created_guest_journeys', 'previous_year_value': 'previous_year_created_guest_journeys', 'relative_increment': 'relative_increment_created_guest_journeys'}, - {'source': 'int_core__mtd_guest_journey_metrics', 'order_by': 10, 'metric': 'Guest Journey Started', 'value': 'started_guest_journeys', 'previous_year_value': 'previous_year_started_guest_journeys', 'relative_increment': 'relative_increment_started_guest_journeys'}, - {'source': 'int_core__mtd_guest_journey_metrics', 'order_by': 11, 'metric': 'Guest Journey Completed', 'value': 'completed_guest_journeys', 'previous_year_value': 'previous_year_completed_guest_journeys', 'relative_increment': 'relative_increment_completed_guest_journeys'}, - {'source': 'int_core__mtd_guest_journey_metrics', 'order_by': 12, 'metric': 'Guest Journey Start Rate', 'value': 'start_rate_guest_journey', 'previous_year_value': 'previous_year_start_rate_guest_journey', 'relative_increment': 'relative_increment_start_rate_guest_journey'}, - {'source': 'int_core__mtd_guest_journey_metrics', 'order_by': 13, 'metric': 'Guest Journey Completion Rate', 'value': 'completion_rate_guest_journey', 'previous_year_value': 'previous_year_completion_rate_guest_journey', 'relative_increment': 'relative_increment_completion_rate_guest_journey'}, - {'source': 'int_core__mtd_guest_journey_metrics', 'order_by': 14, 'metric': 'Guest Journey Incompletion Rate', 'value': 'incompletion_rate_guest_journey', 'previous_year_value': 'previous_year_incompletion_rate_guest_journey', 'relative_increment': 'relative_increment_incompletion_rate_guest_journey'} - + { + "source": "int_core__mtd_booking_metrics", + "order_by": 1, + "metric": "Created Bookings", + "value": "created_bookings", + "previous_year_value": "previous_year_created_bookings", + "relative_increment": "relative_increment_created_bookings", + "number_format": "integer", + }, + { + "source": "int_core__mtd_booking_metrics", + "order_by": 2, + "metric": "Checkout Bookings", + "value": "check_out_bookings", + "previous_year_value": "previous_year_check_out_bookings", + "relative_increment": "relative_increment_check_out_bookings", + "number_format": "integer", + }, + { + "source": "int_core__mtd_booking_metrics", + "order_by": 3, + "metric": "Listings Booked in Month", + "value": "listings_booked_in_month", + "previous_year_value": "previous_year_listings_booked_in_month", + "relative_increment": "relative_increment_listings_booked_in_month", + "number_format": "integer", + }, + { + "source": "int_core__mtd_booking_metrics", + "order_by": 4, + "metric": "Listings Booked in 6 Months", + "value": "listings_booked_in_6_months", + "previous_year_value": "previous_year_listings_booked_in_6_months", + "relative_increment": "relative_increment_listings_booked_in_6_months", + "number_format": "integer", + }, + { + "source": "int_core__mtd_booking_metrics", + "order_by": 5, + "metric": "Listings Booked in 12 Months", + "value": "listings_booked_in_12_months", + "previous_year_value": "previous_year_listings_booked_in_12_months", + "relative_increment": "relative_increment_listings_booked_in_12_months", + "number_format": "integer", + }, + { + "source": "int_core__mtd_booking_metrics", + "order_by": 6, + "metric": "Hosts Booked in Month", + "value": "hosts_booked_in_month", + "previous_year_value": "previous_year_hosts_booked_in_month", + "relative_increment": "relative_increment_hosts_booked_in_month", + "number_format": "integer", + }, + { + "source": "int_core__mtd_booking_metrics", + "order_by": 7, + "metric": "Hosts Booked in 6 Months", + "value": "hosts_booked_in_6_months", + "previous_year_value": "previous_year_hosts_booked_in_6_months", + "relative_increment": "relative_increment_hosts_booked_in_6_months", + "number_format": "integer", + }, + { + "source": "int_core__mtd_booking_metrics", + "order_by": 8, + "metric": "Hosts Booked in 12 Months", + "value": "hosts_booked_in_12_months", + "previous_year_value": "previous_year_hosts_booked_in_12_months", + "relative_increment": "relative_increment_hosts_booked_in_12_months", + "number_format": "integer", + }, + { + "source": "int_core__mtd_guest_journey_metrics", + "order_by": 9, + "metric": "Guest Journey Created", + "value": "created_guest_journeys", + "previous_year_value": "previous_year_created_guest_journeys", + "relative_increment": "relative_increment_created_guest_journeys", + "number_format": "integer", + }, + { + "source": "int_core__mtd_guest_journey_metrics", + "order_by": 10, + "metric": "Guest Journey Started", + "value": "started_guest_journeys", + "previous_year_value": "previous_year_started_guest_journeys", + "relative_increment": "relative_increment_started_guest_journeys", + "number_format": "integer", + }, + { + "source": "int_core__mtd_guest_journey_metrics", + "order_by": 11, + "metric": "Guest Journey Completed", + "value": "completed_guest_journeys", + "previous_year_value": "previous_year_completed_guest_journeys", + "relative_increment": "relative_increment_completed_guest_journeys", + "number_format": "integer", + }, + { + "source": "int_core__mtd_guest_journey_metrics", + "order_by": 12, + "metric": "Guest Journey Start Rate", + "value": "start_rate_guest_journey", + "previous_year_value": "previous_year_start_rate_guest_journey", + "relative_increment": "relative_increment_start_rate_guest_journey", + "number_format": "percentage", + }, + { + "source": "int_core__mtd_guest_journey_metrics", + "order_by": 13, + "metric": "Guest Journey Completion Rate", + "value": "completion_rate_guest_journey", + "previous_year_value": "previous_year_completion_rate_guest_journey", + "relative_increment": "relative_increment_completion_rate_guest_journey", + "number_format": "percentage", + }, + { + "source": "int_core__mtd_guest_journey_metrics", + "order_by": 14, + "metric": "Guest Journey Incompletion Rate", + "value": "incompletion_rate_guest_journey", + "previous_year_value": "previous_year_incompletion_rate_guest_journey", + "relative_increment": "relative_increment_incompletion_rate_guest_journey", + "number_format": "percentage", + }, ] %} with int_core__mtd_booking_metrics as ( select * from {{ ref("int_core__mtd_booking_metrics") }} ), int_core__mtd_guest_journey_metrics as ( - select * from {{ ref("int_core__mtd_guest_journey_metrics") }} + select * from {{ ref("int_core__mtd_guest_journey_metrics") }} ) {% for metric in metrics %} -select - year, - month, - day, - is_end_of_month, - is_current_month, - date, - previous_year_date, - {{ metric.order_by }} as order_by, - '{{ metric.metric }}' as metric, - {{ metric.value }} as value, - {{ metric.previous_year_value }} as previous_year_value, - {{ metric.relative_increment }} as relative_increment -from {{ metric.source }} -{% if not loop.last %}union all{% endif %} + select + year, + month, + day, + is_end_of_month, + is_current_month, + date, + previous_year_date, + {{ metric.order_by }} as order_by, + -- quotation marks added because text format + '{{ metric.number_format }}' as number_format, + '{{ metric.metric }}' as metric, + {{ metric.value }} as value, + {{ metric.previous_year_value }} as previous_year_value, + {{ metric.relative_increment }} as relative_increment + from {{ metric.source }} + {% if not loop.last %} + union all + {% endif %} {% endfor %} diff --git a/models/intermediate/core/schema.yaml b/models/intermediate/core/schema.yaml index 32a28e2..ee88552 100644 --- a/models/intermediate/core/schema.yaml +++ b/models/intermediate/core/schema.yaml @@ -217,7 +217,20 @@ models: description: name of the business metric. 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. + tests: + - accepted_values: + values: ['integer', 'percentage'] + - name: value data_type: numeric description: | diff --git a/models/reporting/core/core__mtd_aggregated_metrics.sql b/models/reporting/core/core__mtd_aggregated_metrics.sql index 3418116..f26b28b 100644 --- a/models/reporting/core/core__mtd_aggregated_metrics.sql +++ b/models/reporting/core/core__mtd_aggregated_metrics.sql @@ -12,6 +12,7 @@ select date as date, previous_year_date as previous_year_date, order_by as order_by, + number_format as number_format, metric as metric, value as value, previous_year_value as previous_year_value,