diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0e5fab8..bb56d01 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,7 +1,7 @@ name: Trigger dbt cloud job to prep views and build docs on: push: - branches: [ main ] + branches: [main] jobs: prep: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 48de130..3eee5d0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,6 +6,8 @@ repos: - id: check-script-semicolon files: ^models - id: check-model-has-properties-file + files: ^models + exclude: ^custom_tests - id: check-script-has-no-table-name files: ^models - id: generate-model-properties-file diff --git a/custom_tests/workflow_enables_count_proportion.sql b/custom_tests/workflow_enables_count_proportion.sql new file mode 100644 index 0000000..3e4d753 --- /dev/null +++ b/custom_tests/workflow_enables_count_proportion.sql @@ -0,0 +1,47 @@ +-- tests/workflow_enables_count_proportion.sql +{% set lookback_window_days = 30 %} +{% set min_enable_percent = 0.05 %} + +WITH filtered_data AS ( + SELECT + * + FROM + {{ ref('workflows') }} + WHERE + created_at_pt >= CURRENT_DATE - INTERVAL '30 days' + AND enable_count >= 1 +), + +total_count AS ( + SELECT + COUNT(*) AS total + FROM + {{ ref('workflows') }} +), + +filtered_count AS ( + SELECT + COUNT(*) AS filtered + FROM + filtered_data +), + +proportion_data AS ( + SELECT + filtered::FLOAT / total AS proportion + FROM + (SELECT filtered FROM filtered_count) AS fc, + (SELECT total FROM total_count) AS tc +) + +SELECT + 'The proportion of workflows enabled in the last ' + || {{ lookback_window_days }} + || ' days is below ' + || {{ min_enable_percent * 100 }} + || '%' AS error_message, + proportion +FROM + proportion_data +WHERE + proportion < {{ min_enable_percent }} diff --git a/custom_tests/workflow_saves_count_proportion.sql b/custom_tests/workflow_saves_count_proportion.sql new file mode 100644 index 0000000..41ca771 --- /dev/null +++ b/custom_tests/workflow_saves_count_proportion.sql @@ -0,0 +1,43 @@ +-- tests/workflow_saves_count_proportion.sql +{% set lookback_window_days = 30 %} +{% set min_save_percent = 0.05 %} + +WITH filtered_data AS ( + SELECT + * + FROM + {{ ref('workflows') }} + WHERE + created_at_pt >= CURRENT_DATE - INTERVAL '{{ lookback_window_days }} days' + AND save_count >= 1 +), + +total_count AS ( + SELECT + COUNT(*) AS total + FROM + {{ ref('workflows') }} +), + +filtered_count AS ( + SELECT + COUNT(*) AS filtered + FROM + filtered_data +), + +proportion_data AS ( + SELECT + filtered::FLOAT / total AS proportion + FROM + (SELECT filtered FROM filtered_count) AS fc, + (SELECT total FROM total_count) AS tc +) + +SELECT + 'The proportion of workflows saved in the last {{ lookback_window_days }} days is below {{ min_save_percent * 100 }}%' AS error_message, + proportion +FROM + proportion_data +WHERE + proportion < {{ min_save_percent }} diff --git a/models/google_analytics/staging/stg_ga_session_starts.sql.orig b/models/google_analytics/staging/stg_ga_session_starts.sql.orig index 4e550cf..ddc2295 100644 --- a/models/google_analytics/staging/stg_ga_session_starts.sql.orig +++ b/models/google_analytics/staging/stg_ga_session_starts.sql.orig @@ -10,7 +10,7 @@ WITH -- URL parts CASE WHEN page_location ILIKE 'http%' THEN PARSE_URL(page_location) - ELSE NULL + ELSE NULL END AS parsed_url, parsed_url:host || '/' || parsed_url:path AS page_url, parsed_url:host::STRING AS page_host, diff --git a/models/mesa/int_shop_weeks.yml b/models/mesa/int_shop_weeks.yml new file mode 100644 index 0000000..ef0d347 --- /dev/null +++ b/models/mesa/int_shop_weeks.yml @@ -0,0 +1,8 @@ +version: 2 +models: + - name: int_shop_weeks + columns: + - name: week + - name: shop_subdomain + - name: inc_amount + - name: first_week diff --git a/models/mesa/marts/_workflows.yml b/models/mesa/marts/_workflows.yml index c614688..cf8062f 100644 --- a/models/mesa/marts/_workflows.yml +++ b/models/mesa/marts/_workflows.yml @@ -126,6 +126,7 @@ models: description: The number of times the workflow has been enabled. data_tests: - not_null + - name: save_count description: The number of times the workflow has been saved. data_tests: diff --git a/models/mesa/marts/workflows.sql b/models/mesa/marts/workflows.sql index 86540c9..9e4216d 100644 --- a/models/mesa/marts/workflows.sql +++ b/models/mesa/marts/workflows.sql @@ -92,7 +92,7 @@ workflow_saves AS ( SELECT workflow_id, COALESCE( - COUNT_IF(event_id IN ('workflow_save', 'dashboard_workflow_edit') AND properties_workflow_id = workflow_id), + COUNT_IF(event_id IN ('workflow_save', 'dashboard_workflow_edit') AND workflow_id IN (properties_workflow_id, properties_id)), 0) AS save_count, save_count > 0 AS has_edited_or_saved_workflow @@ -106,7 +106,7 @@ workflow_enables AS ( SELECT workflow_id, - COALESCE(COUNT_IF(event_id = 'workflow_enable' AND workflow_id = properties_workflow_id), 0) AS enable_count, + COALESCE(COUNT_IF(event_id = 'workflow_enable' AND workflow_id IN (properties_workflow_id, properties_id)), 0) AS enable_count, enable_count > 0 AS has_enabled_workflow FROM workflows LEFT JOIN {{ ref('int_mesa_flow_events') }} USING (shop_subdomain) @@ -153,3 +153,5 @@ final AS ( SELECT * FROM final +WHERE created_at_pt > '2024-05-01' +AND save_count > 0 diff --git a/models/mesa/stg_ga_session_starts.yml b/models/mesa/stg_ga_session_starts.yml new file mode 100644 index 0000000..49338c6 --- /dev/null +++ b/models/mesa/stg_ga_session_starts.yml @@ -0,0 +1,24 @@ +version: 2 +models: + - name: stg_ga_session_starts + columns: + - name: user_pseudo_id + - name: page_location + - name: event_timestamp_pt + - name: page_url + - name: page_host + - name: page_path + - name: page_query + - name: utm_campaign + - name: utm_medium + - name: utm_source + - name: device_category + - name: utm_content + - name: utm_term + - name: app_store_surface_detail + - name: app_store_surface_type + - name: app_store_surface_intra_position + - name: app_store_surface_inter_position + - name: app_store_locale + - name: shopify_id + - name: shop_subdomain diff --git a/seeds/staff_subdomains.csv b/seeds/staff_subdomains.csv index 7936f70..94ee1be 100644 --- a/seeds/staff_subdomains.csv +++ b/seeds/staff_subdomains.csv @@ -63,4 +63,4 @@ ahn-devstore shoppad321 kalen-jordan-dev anh-devstore -shoppad-jen \ No newline at end of file +shoppad-jen