diff --git a/macros/tests/assert_dimension_completeness.sql b/macros/tests/assert_dimension_completeness.sql index 967bc28..9dd7531 100644 --- a/macros/tests/assert_dimension_completeness.sql +++ b/macros/tests/assert_dimension_completeness.sql @@ -1,21 +1,35 @@ {% test assert_dimension_completeness( - model, column_name, metric_column_name, global_dimension_name="global" + model, column_name, metric_column_names, global_dimension_name="global" ) %} with - sum_by_dimension as ( + + {% for metric_column_name in metric_column_names %} + sum_by_dimension_{{ metric_column_name }} as ( select {{ column_name }}, sum({{ metric_column_name }}) as sum_metric from {{ model }} group by {{ column_name }} ), - global_sum as ( + global_sum_{{ metric_column_name }} as ( select sum({{ metric_column_name }}) as total_metric from {{ model }} where {{ column_name }} = '{{ global_dimension_name }}' + ), + discrepancy_{{ metric_column_name }} as ( + select * + from sum_by_dimension_{{ metric_column_name }}, global_sum_{{ metric_column_name }} + where sum_by_dimension_{{ metric_column_name }}.sum_metric != global_sum_{{ metric_column_name }}.total_metric ) + {% if not loop.last %}, {% endif %} + {% endfor %} - select * - from sum_by_dimension, global_sum - where sum_by_dimension.sum_metric != global_sum.total_metric + {% for metric_column_name in metric_column_names %} + {% if loop.first %} + select * from discrepancy_{{ metric_column_name }} + {% else %} + union all + select * from discrepancy_{{ metric_column_name }} + {% endif %} + {% endfor %} {% endtest %} diff --git a/models/intermediate/kpis/schema.yml b/models/intermediate/kpis/schema.yml index 9241c55..0ae0ae7 100644 --- a/models/intermediate/kpis/schema.yml +++ b/models/intermediate/kpis/schema.yml @@ -513,7 +513,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: created_bookings + metric_column_names: + - created_bookings - accepted_values: values: - global @@ -567,7 +568,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: created_bookings + metric_column_names: + - created_bookings - accepted_values: values: - global @@ -817,7 +819,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: created_guest_journeys + metric_column_names: + - created_guest_journeys - accepted_values: values: - global @@ -870,7 +873,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: created_guest_journeys + metric_column_names: + - created_guest_journeys - accepted_values: values: - global @@ -1119,7 +1123,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: started_guest_journeys + metric_column_names: + - started_guest_journeys - accepted_values: values: - global @@ -1172,7 +1177,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: started_guest_journeys + metric_column_names: + - started_guest_journeys - accepted_values: values: - global @@ -1421,7 +1427,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: completed_guest_journeys + metric_column_names: + - completed_guest_journeys - accepted_values: values: - global @@ -1474,7 +1481,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: completed_guest_journeys + metric_column_names: + - completed_guest_journeys - accepted_values: values: - global @@ -1723,7 +1731,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: guest_journeys_with_payment + metric_column_names: + - guest_journeys_with_payment - accepted_values: values: - global @@ -1776,7 +1785,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: guest_journeys_with_payment + metric_column_names: + - guest_journeys_with_payment - accepted_values: values: - global @@ -2080,13 +2090,11 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: deposit_fees_in_gbp - - assert_dimension_completeness: - metric_column_name: waiver_payments_in_gbp - - assert_dimension_completeness: - metric_column_name: checkin_cover_fees_in_gbp - - assert_dimension_completeness: - metric_column_name: total_guest_payments_in_gbp + metric_column_names: + - deposit_fees_in_gbp + - waiver_payments_in_gbp + - checkin_cover_fees_in_gbp + - total_guest_payments_in_gbp - accepted_values: values: - global @@ -2159,13 +2167,11 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: deposit_fees_in_gbp - - assert_dimension_completeness: - metric_column_name: waiver_payments_in_gbp - - assert_dimension_completeness: - metric_column_name: checkin_cover_fees_in_gbp - - assert_dimension_completeness: - metric_column_name: total_guest_payments_in_gbp + metric_column_names: + - deposit_fees_in_gbp + - waiver_payments_in_gbp + - checkin_cover_fees_in_gbp + - total_guest_payments_in_gbp - accepted_values: values: - global @@ -2434,7 +2440,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: check_out_bookings + metric_column_names: + - check_out_bookings - accepted_values: values: - global @@ -2487,7 +2494,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: check_out_bookings + metric_column_names: + - check_out_bookings - accepted_values: values: - global @@ -2736,7 +2744,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: billable_bookings + metric_column_names: + - billable_bookings - accepted_values: values: - global @@ -2789,7 +2798,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: billable_bookings + metric_column_names: + - billable_bookings - accepted_values: values: - global @@ -3038,7 +3048,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: cancelled_bookings + metric_column_names: + - cancelled_bookings - accepted_values: values: - global @@ -3091,7 +3102,8 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: cancelled_bookings + metric_column_names: + - cancelled_bookings - accepted_values: values: - global @@ -3417,19 +3429,14 @@ models: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: created_guest_journeys_not_cancelled - - assert_dimension_completeness: - metric_column_name: started_guest_journeys_not_cancelled - - assert_dimension_completeness: - metric_column_name: completed_guest_journeys_not_cancelled - - assert_dimension_completeness: - metric_column_name: created_guest_journeys - - assert_dimension_completeness: - metric_column_name: started_guest_journeys - - assert_dimension_completeness: - metric_column_name: completed_guest_journeys - - assert_dimension_completeness: - metric_column_name: count_csat_score + metric_column_names: + - created_guest_journeys_not_cancelled + - started_guest_journeys_not_cancelled + - completed_guest_journeys_not_cancelled + - created_guest_journeys + - started_guest_journeys + - completed_guest_journeys + - count_csat_score - accepted_values: values: - global @@ -3694,19 +3701,14 @@ models: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: created_guest_journeys_not_cancelled - - assert_dimension_completeness: - metric_column_name: started_guest_journeys_not_cancelled - - assert_dimension_completeness: - metric_column_name: completed_guest_journeys_not_cancelled - - assert_dimension_completeness: - metric_column_name: created_guest_journeys - - assert_dimension_completeness: - metric_column_name: started_guest_journeys - - assert_dimension_completeness: - metric_column_name: completed_guest_journeys - - assert_dimension_completeness: - metric_column_name: count_csat_score + metric_column_names: + - created_guest_journeys_not_cancelled + - started_guest_journeys_not_cancelled + - completed_guest_journeys_not_cancelled + - created_guest_journeys + - started_guest_journeys + - completed_guest_journeys + - count_csat_score - accepted_values: values: - global @@ -4037,9 +4039,9 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: xero_host_resolution_payment_count - - assert_dimension_completeness: - metric_column_name: xero_host_resolution_amount_paid_in_gbp + metric_column_names: + - xero_host_resolution_payment_count + - xero_host_resolution_amount_paid_in_gbp - accepted_values: values: - global @@ -4099,9 +4101,9 @@ models: description: The dimension or granularity of the metrics. tests: - assert_dimension_completeness: - metric_column_name: xero_host_resolution_payment_count - - assert_dimension_completeness: - metric_column_name: xero_host_resolution_amount_paid_in_gbp + metric_column_names: + - xero_host_resolution_payment_count + - xero_host_resolution_amount_paid_in_gbp - accepted_values: values: - global