From 443b309ba9f6ecc73f60b33984babd9bd5e59244 Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Fri, 8 Nov 2024 13:18:29 -0800 Subject: [PATCH] Update snapshots. --- .../test_cte_for_shared_metrics__result.txt | 251 ++++++++++++++++++ ...t_cte_for_simple_dataflow_plan__result.txt | 26 ++ 2 files changed, 277 insertions(+) create mode 100644 tests_metricflow/snapshots/test_cte_sql.py/str/test_cte_for_shared_metrics__result.txt create mode 100644 tests_metricflow/snapshots/test_cte_sql.py/str/test_cte_for_simple_dataflow_plan__result.txt diff --git a/tests_metricflow/snapshots/test_cte_sql.py/str/test_cte_for_shared_metrics__result.txt b/tests_metricflow/snapshots/test_cte_sql.py/str/test_cte_for_shared_metrics__result.txt new file mode 100644 index 000000000..237da5c0b --- /dev/null +++ b/tests_metricflow/snapshots/test_cte_sql.py/str/test_cte_for_shared_metrics__result.txt @@ -0,0 +1,251 @@ +test_name: test_cte_for_shared_metrics +test_filename: test_cte_sql.py +docstring: + Check common branches in a query that uses derived metrics defined from metrics that are also in the query. +--- +sql_without_cte: + -- Combine Aggregated Outputs + SELECT + COALESCE(subq_8.metric_time__day, subq_17.metric_time__day, subq_36.metric_time__day) AS metric_time__day + , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest, subq_36.listing__country_latest) AS listing__country_latest + , MAX(subq_8.bookings) AS bookings + , MAX(subq_17.views) AS views + , MAX(CAST(subq_36.bookings AS DOUBLE) / CAST(NULLIF(subq_36.views, 0) AS DOUBLE)) AS bookings_per_view + FROM ( + -- Join Standard Outputs + -- Pass Only Elements: ['bookings', 'listing__country_latest', 'metric_time__day'] + -- Aggregate Measures + -- Compute Metrics via Expressions + SELECT + subq_1.metric_time__day AS metric_time__day + , listings_latest_src_28000.country AS listing__country_latest + , SUM(subq_1.bookings) AS bookings + FROM ( + -- Read Elements From Semantic Model 'bookings_source' + -- Metric Time Dimension 'ds' + SELECT + DATE_TRUNC('day', ds) AS metric_time__day + , listing_id AS listing + , 1 AS bookings + FROM ***************************.fct_bookings bookings_source_src_28000 + ) subq_1 + LEFT OUTER JOIN + ***************************.dim_listings_latest listings_latest_src_28000 + ON + subq_1.listing = listings_latest_src_28000.listing_id + GROUP BY + subq_1.metric_time__day + , listings_latest_src_28000.country + ) subq_8 + FULL OUTER JOIN ( + -- Join Standard Outputs + -- Pass Only Elements: ['views', 'listing__country_latest', 'metric_time__day'] + -- Aggregate Measures + -- Compute Metrics via Expressions + SELECT + subq_10.metric_time__day AS metric_time__day + , listings_latest_src_28000.country AS listing__country_latest + , SUM(subq_10.views) AS views + FROM ( + -- Read Elements From Semantic Model 'views_source' + -- Metric Time Dimension 'ds' + SELECT + DATE_TRUNC('day', ds) AS metric_time__day + , listing_id AS listing + , 1 AS views + FROM ***************************.fct_views views_source_src_28000 + ) subq_10 + LEFT OUTER JOIN + ***************************.dim_listings_latest listings_latest_src_28000 + ON + subq_10.listing = listings_latest_src_28000.listing_id + GROUP BY + subq_10.metric_time__day + , listings_latest_src_28000.country + ) subq_17 + ON + ( + subq_8.listing__country_latest = subq_17.listing__country_latest + ) AND ( + subq_8.metric_time__day = subq_17.metric_time__day + ) + FULL OUTER JOIN ( + -- Combine Aggregated Outputs + SELECT + COALESCE(subq_26.metric_time__day, subq_35.metric_time__day) AS metric_time__day + , COALESCE(subq_26.listing__country_latest, subq_35.listing__country_latest) AS listing__country_latest + , MAX(subq_26.bookings) AS bookings + , MAX(subq_35.views) AS views + FROM ( + -- Join Standard Outputs + -- Pass Only Elements: ['bookings', 'listing__country_latest', 'metric_time__day'] + -- Aggregate Measures + -- Compute Metrics via Expressions + SELECT + subq_19.metric_time__day AS metric_time__day + , listings_latest_src_28000.country AS listing__country_latest + , SUM(subq_19.bookings) AS bookings + FROM ( + -- Read Elements From Semantic Model 'bookings_source' + -- Metric Time Dimension 'ds' + SELECT + DATE_TRUNC('day', ds) AS metric_time__day + , listing_id AS listing + , 1 AS bookings + FROM ***************************.fct_bookings bookings_source_src_28000 + ) subq_19 + LEFT OUTER JOIN + ***************************.dim_listings_latest listings_latest_src_28000 + ON + subq_19.listing = listings_latest_src_28000.listing_id + GROUP BY + subq_19.metric_time__day + , listings_latest_src_28000.country + ) subq_26 + FULL OUTER JOIN ( + -- Join Standard Outputs + -- Pass Only Elements: ['views', 'listing__country_latest', 'metric_time__day'] + -- Aggregate Measures + -- Compute Metrics via Expressions + SELECT + subq_28.metric_time__day AS metric_time__day + , listings_latest_src_28000.country AS listing__country_latest + , SUM(subq_28.views) AS views + FROM ( + -- Read Elements From Semantic Model 'views_source' + -- Metric Time Dimension 'ds' + SELECT + DATE_TRUNC('day', ds) AS metric_time__day + , listing_id AS listing + , 1 AS views + FROM ***************************.fct_views views_source_src_28000 + ) subq_28 + LEFT OUTER JOIN + ***************************.dim_listings_latest listings_latest_src_28000 + ON + subq_28.listing = listings_latest_src_28000.listing_id + GROUP BY + subq_28.metric_time__day + , listings_latest_src_28000.country + ) subq_35 + ON + ( + subq_26.listing__country_latest = subq_35.listing__country_latest + ) AND ( + subq_26.metric_time__day = subq_35.metric_time__day + ) + GROUP BY + COALESCE(subq_26.metric_time__day, subq_35.metric_time__day) + , COALESCE(subq_26.listing__country_latest, subq_35.listing__country_latest) + ) subq_36 + ON + ( + COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest) = subq_36.listing__country_latest + ) AND ( + COALESCE(subq_8.metric_time__day, subq_17.metric_time__day) = subq_36.metric_time__day + ) + GROUP BY + COALESCE(subq_8.metric_time__day, subq_17.metric_time__day, subq_36.metric_time__day) + , COALESCE(subq_8.listing__country_latest, subq_17.listing__country_latest, subq_36.listing__country_latest) + + +sql_with_cte: + -- Combine Aggregated Outputs + WITH cm_0_cte AS ( + -- Join Standard Outputs + -- Pass Only Elements: ['bookings', 'listing__country_latest', 'metric_time__day'] + -- Aggregate Measures + -- Compute Metrics via Expressions + SELECT + subq_39.metric_time__day AS metric_time__day + , listings_latest_src_28000.country AS listing__country_latest + , SUM(subq_39.bookings) AS bookings + FROM ( + -- Read Elements From Semantic Model 'bookings_source' + -- Metric Time Dimension 'ds' + SELECT + DATE_TRUNC('day', ds) AS metric_time__day + , listing_id AS listing + , 1 AS bookings + FROM ***************************.fct_bookings bookings_source_src_28000 + ) subq_39 + LEFT OUTER JOIN + ***************************.dim_listings_latest listings_latest_src_28000 + ON + subq_39.listing = listings_latest_src_28000.listing_id + GROUP BY + subq_39.metric_time__day + , listings_latest_src_28000.country + ) + + , cm_1_cte AS ( + -- Join Standard Outputs + -- Pass Only Elements: ['views', 'listing__country_latest', 'metric_time__day'] + -- Aggregate Measures + -- Compute Metrics via Expressions + SELECT + subq_48.metric_time__day AS metric_time__day + , listings_latest_src_28000.country AS listing__country_latest + , SUM(subq_48.views) AS views + FROM ( + -- Read Elements From Semantic Model 'views_source' + -- Metric Time Dimension 'ds' + SELECT + DATE_TRUNC('day', ds) AS metric_time__day + , listing_id AS listing + , 1 AS views + FROM ***************************.fct_views views_source_src_28000 + ) subq_48 + LEFT OUTER JOIN + ***************************.dim_listings_latest listings_latest_src_28000 + ON + subq_48.listing = listings_latest_src_28000.listing_id + GROUP BY + subq_48.metric_time__day + , listings_latest_src_28000.country + ) + + SELECT + COALESCE(cm_0_cte.metric_time__day, cm_1_cte.metric_time__day, subq_58.metric_time__day) AS metric_time__day + , COALESCE(cm_0_cte.listing__country_latest, cm_1_cte.listing__country_latest, subq_58.listing__country_latest) AS listing__country_latest + , MAX(cm_0_cte.bookings) AS bookings + , MAX(cm_1_cte.views) AS views + , MAX(CAST(subq_58.bookings AS DOUBLE) / CAST(NULLIF(subq_58.views, 0) AS DOUBLE)) AS bookings_per_view + FROM cm_0_cte cm_0_cte + FULL OUTER JOIN + cm_1_cte cm_1_cte + ON + ( + cm_0_cte.listing__country_latest = cm_1_cte.listing__country_latest + ) AND ( + cm_0_cte.metric_time__day = cm_1_cte.metric_time__day + ) + FULL OUTER JOIN ( + -- Combine Aggregated Outputs + SELECT + COALESCE(cm_0_cte.metric_time__day, cm_1_cte.metric_time__day) AS metric_time__day + , COALESCE(cm_0_cte.listing__country_latest, cm_1_cte.listing__country_latest) AS listing__country_latest + , MAX(cm_0_cte.bookings) AS bookings + , MAX(cm_1_cte.views) AS views + FROM cm_0_cte cm_0_cte + FULL OUTER JOIN + cm_1_cte cm_1_cte + ON + ( + cm_0_cte.listing__country_latest = cm_1_cte.listing__country_latest + ) AND ( + cm_0_cte.metric_time__day = cm_1_cte.metric_time__day + ) + GROUP BY + COALESCE(cm_0_cte.metric_time__day, cm_1_cte.metric_time__day) + , COALESCE(cm_0_cte.listing__country_latest, cm_1_cte.listing__country_latest) + ) subq_58 + ON + ( + COALESCE(cm_0_cte.listing__country_latest, cm_1_cte.listing__country_latest) = subq_58.listing__country_latest + ) AND ( + COALESCE(cm_0_cte.metric_time__day, cm_1_cte.metric_time__day) = subq_58.metric_time__day + ) + GROUP BY + COALESCE(cm_0_cte.metric_time__day, cm_1_cte.metric_time__day, subq_58.metric_time__day) + , COALESCE(cm_0_cte.listing__country_latest, cm_1_cte.listing__country_latest, subq_58.listing__country_latest) diff --git a/tests_metricflow/snapshots/test_cte_sql.py/str/test_cte_for_simple_dataflow_plan__result.txt b/tests_metricflow/snapshots/test_cte_sql.py/str/test_cte_for_simple_dataflow_plan__result.txt new file mode 100644 index 000000000..200de4b53 --- /dev/null +++ b/tests_metricflow/snapshots/test_cte_sql.py/str/test_cte_for_simple_dataflow_plan__result.txt @@ -0,0 +1,26 @@ +test_name: test_cte_for_simple_dataflow_plan +test_filename: test_cte_sql.py +docstring: + Test a simple case for generating a CTE for a specific dataflow plan node. +--- +sql_without_cte: + -- Read Elements From Semantic Model 'bookings_source' + -- Pass Only Elements: ['bookings',] + SELECT + 1 AS bookings + FROM ***************************.fct_bookings bookings_source_src_28000 + + +sql_with_cte: + -- Read From CTE For node_id=rss_28001 + -- Pass Only Elements: ['bookings',] + WITH rss_28001_cte AS ( + -- Read Elements From Semantic Model 'bookings_source' + SELECT + 1 AS bookings + FROM ***************************.fct_bookings bookings_source_src_28000 + ) + + SELECT + bookings AS bookings + FROM rss_28001_cte rss_28001_cte